


'''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.







def       _UpperCamelCase (						UpperCamelCase__   ):
			UpperCAmelCase__					:   Any       				=       [False] * len(UpperCamelCase__   )
			UpperCAmelCase__					:   Dict       				=       [-1] * len(UpperCamelCase__   )

			def dfs(UpperCamelCase__	, UpperCamelCase__   ):
						UpperCAmelCase__					:   List[str]       				=       True
						UpperCAmelCase__					:   Optional[int]       				=       c
						for u in graph[v]:
									if not visited[u]:
												dfs(UpperCamelCase__	, 1 - c   )

			for i in range(len(UpperCamelCase__   )   ):
						if not visited[i]:
									dfs(UpperCamelCase__	, 0   )

			for i in range(len(UpperCamelCase__   )   ):
						for j in graph[i]:
									if color[i] == color[j]:
												return False

			return True


# Adjacency list of graph
__A		={0: [1, 3], 1: [0, 2], 2: [1, 3], 3: [0, 2], 4: []}


print(check_bipartite_dfs(graph))



'''simple docstring'''



def       _UpperCamelCase (						UpperCamelCase__ = 4_0_0_0_0_0_0   ):
			UpperCAmelCase__					:   List[str]       				=       [0, 1]
			UpperCAmelCase__					:   Any       				=       0
			while fib[i] <= n:
						fib.append(fib[i] + fib[i + 1]   )
						if fib[i + 2] > n:
									break
						i += 1
			UpperCAmelCase__					:   str       				=       0
			for j in range(len(UpperCamelCase__   ) - 1   ):
						if fib[j] % 2 == 0:
									total += fib[j]

			return total


if __name__ == "__main__":
		print(f"""{solution() = }""")