





'''simple docstring'''


def       __snake_case		( SCREAMING_SNAKE_CASE_ :			int )							->     list:

       """simple docstring"""


       if bit_count < 0:
              raise ValueError('''The given input must be positive''' )

       # get the generated string sequence
       UpperCAmelCase  =						gray_code_sequence_string(SCREAMING_SNAKE_CASE_ )
       #
       # convert them to integers
       for i in range(len(SCREAMING_SNAKE_CASE_ ) ):
              UpperCAmelCase  =						int(sequence[i]			,	2 )

       return sequence
def       __snake_case		( SCREAMING_SNAKE_CASE_ :			int )							->     list:

       """simple docstring"""


       if bit_count == 0:
              return ["0"]

       if bit_count == 1:
              return ["0", "1"]

       UpperCAmelCase  =						1 << bit_count  # defines the length of the sequence
       # 1<< n is equivalent to 2^n

       # recursive answer will generate answer for n-1 bits
       UpperCAmelCase  =						gray_code_sequence_string(bit_count - 1 )

       UpperCAmelCase  =						[]

       # append 0 to first half of the smaller sequence generated
       for i in range(seq_len // 2 ):
              UpperCAmelCase  =						'''0''' + smaller_sequence[i]
              sequence.append(SCREAMING_SNAKE_CASE_ )

       # append 1 to second half ... start from the end of the list
       for i in reversed(range(seq_len // 2 ) ):
              UpperCAmelCase  =						'''1''' + smaller_sequence[i]
              sequence.append(SCREAMING_SNAKE_CASE_ )

       return sequence


if __name__ == "__main__":
    import doctest

    doctest.testmod()




def  __snake_case							(	__magic_name__						):







				'''simple docstring'''


				lowercase         =      set()
				# To detect a back edge, keep track of vertices currently in the recursion stack
				lowercase         =      set()
				return any(
				    node not in visited and depth_first_search(__magic_name__		,    __magic_name__		,    __magic_name__		,    __magic_name__						)
				    for node in graph						)

def  __snake_case							(	__magic_name__		,    __magic_name__		,    __magic_name__		,    __magic_name__						):







				'''simple docstring'''


				visited.add(__magic_name__						)
				rec_stk.add(__magic_name__						)

				for node in graph[vertex]:
								if node not in visited:
												if depth_first_search(__magic_name__		,    __magic_name__		,    __magic_name__		,    __magic_name__						):
																return True
								elif node in rec_stk:
												return True

    # The node needs to be removed from recursion stack before function ends
				rec_stk.remove(__magic_name__						)
				return False


if __name__ == "__main__":
						from doctest import testmod

						testmod()
