


'''simple docstring'''




from __future__ import annotations

from pprint import pformat
from typing import Generic, TypeVar

_lowerCAmelCase  :		Dict		     =	TypeVar('T')



class  lowerCAmelCase				(				Generic[T]							):



	def __init__(					self ,					snake_case__ = True    ):
		lowerCAmelCase					:    dict[T, list[T]]      							= {}  # dictionary of lists
		lowerCAmelCase					:    str      							= directed



	def 				lowercase     (					self ,					snake_case__ ,					snake_case__    ):

		if not self.directed:  # For undirected graphs
			# if both source vertex and destination vertex are both present in the
			# adjacency list, add destination vertex to source vertex list of adjacent
			# vertices and add source vertex to destination vertex list of adjacent
			# vertices.
			if source_vertex in self.adj_list and destination_vertex in self.adj_list:
				self.adj_list[source_vertex].append(snake_case__    )
				self.adj_list[destination_vertex].append(snake_case__    )
			# if only source vertex is present in adjacency list, add destination vertex
			# to source vertex list of adjacent vertices, then create a new vertex with
			# destination vertex as key and assign a list containing the source vertex
			# as it's first adjacent vertex.
			elif source_vertex in self.adj_list:
				self.adj_list[source_vertex].append(snake_case__    )
				lowerCAmelCase					:    Dict      							= [source_vertex]
			# if only destination vertex is present in adjacency list, add source vertex
			# to destination vertex list of adjacent vertices, then create a new vertex
			# with source vertex as key and assign a list containing the source vertex
			# as it's first adjacent vertex.
			elif destination_vertex in self.adj_list:
				self.adj_list[destination_vertex].append(snake_case__    )
				lowerCAmelCase					:    Optional[int]      							= [destination_vertex]
			# if both source vertex and destination vertex are not present in adjacency
			# list, create a new vertex with source vertex as key and assign a list
			# containing the destination vertex as it's first adjacent vertex also
			# create a new vertex with destination vertex as key and assign a list
			# containing the source vertex as it's first adjacent vertex.
			else:
				lowerCAmelCase					:    Dict      							= [destination_vertex]
				lowerCAmelCase					:    Tuple      							= [source_vertex]
		else:  # For directed graphs
			# if both source vertex and destination vertex are present in adjacency
			# list, add destination vertex to source vertex list of adjacent vertices.
			if source_vertex in self.adj_list and destination_vertex in self.adj_list:
				self.adj_list[source_vertex].append(snake_case__    )
			# if only source vertex is present in adjacency list, add destination
			# vertex to source vertex list of adjacent vertices and create a new vertex
			# with destination vertex as key, which has no adjacent vertex
			elif source_vertex in self.adj_list:
				self.adj_list[source_vertex].append(snake_case__    )
				lowerCAmelCase					:    Optional[int]      							= []
			# if only destination vertex is present in adjacency list, create a new
			# vertex with source vertex as key and assign a list containing destination
			# vertex as first adjacent vertex
			elif destination_vertex in self.adj_list:
				lowerCAmelCase					:    Optional[Any]      							= [destination_vertex]
			# if both source vertex and destination vertex are not present in adjacency
			# list, create a new vertex with source vertex as key and a list containing
			# destination vertex as it's first adjacent vertex. Then create a new vertex
			# with destination vertex as key, which has no adjacent vertex
			else:
				lowerCAmelCase					:    Dict      							= [destination_vertex]
				lowerCAmelCase					:    str      							= []

		return self



	def __repr__(					self    ):
		return pformat(self.adj_list    )




'''simple docstring'''




def 			__UpperCamelCase    (    _A    :				int				)    ->      bool:




	"""simple docstring"""





	return number & 1 == 0


if __name__ == "__main__":
				import doctest

				doctest.testmod()
