

'''simple docstring'''

# A Bipartite Graph is a graph whose vertices can be divided into two independent sets,
# U and V such that every edge (u, v) either connects a vertex from U to V or a vertex
# from V to U. In other words, for every edge (u, v), either u belongs to U and v to V,
# or u belongs to V and v to U. We can also say that there is no edge that connects
# vertices of same set.
from queue import Queue





def 				A_					(	snake_case	):
  SCREAMING_SNAKE_CASE:Optional[Any]   =   Queue()
  SCREAMING_SNAKE_CASE:Union[str, Any]   =   [False] * len(snake_case	)
  SCREAMING_SNAKE_CASE:Union[str, Any]   =   [-1] * len(snake_case	)

  def bfs():
    while not queue.empty():
      SCREAMING_SNAKE_CASE:int   =   queue.get()
      SCREAMING_SNAKE_CASE:List[Any]   =   True

      for neighbour in graph[u]:
        if neighbour == u:
          return False

        if color[neighbour] == -1:
          SCREAMING_SNAKE_CASE:Any   =   1 - color[u]
          queue.put(snake_case	)

        elif color[neighbour] == color[u]:
          return False

    return True

  for i in range(len(snake_case	)	):
    if not visited[i]:
      queue.put(snake_case	)
      SCREAMING_SNAKE_CASE:int   =   0
      if bfs() is False:
        return False

  return True


if __name__ == "__main__":
    # Adjacency List of graph
    print(check_bipartite({0: [1, 3], 1: [0, 2], 2: [1, 3], 3: [0, 2]}))









'''simple docstring'''

from collections import Counter





def 				A_					(	snake_case	):
  return sum(socks_by_color // 2 for socks_by_color in Counter(snake_case	).values()	)


if __name__ == "__main__":
    import doctest

    doctest.testmod()

    A_      =							[int(x) for x in input("Enter socks by color :").rstrip().split()]
    print(f'''sock_merchant({colors}) = {sock_merchant(colors)}''')






