

'''simple docstring'''

from __future__ import annotations

from queue import Queue







class lowerCamelCase   :

				def __init__(       self )    ->							None:
					snake_case							=					{}

				def 					_lowerCamelCase    (       self )    ->							None:
					for i in self.vertices:
						print(lowercase_,						' : ',						' -> '.join([str(lowercase_ ) for j in self.vertices[i]] ) )

				def 					_lowerCamelCase    (       self,						lowercase_,						lowercase_ )    ->							None:
					if from_vertex in self.vertices:
						self.vertices[from_vertex].append(lowercase_ )
					else:
						snake_case							=					[to_vertex]






				def 					_lowerCamelCase    (       self,						lowercase_ )    ->							set[int]:
					snake_case							=					set()

					# create a first in first out queue to store all the vertices for BFS
					snake_case							=					Queue()

					# mark the source node as visited and enqueue it
					visited.add(lowercase_ )
					queue.put(lowercase_ )

					while not queue.empty():
						snake_case							=					queue.get()

						# loop through all adjacent vertex and enqueue it if not yet visited
						for adjacent_vertex in self.vertices[vertex]:
							if adjacent_vertex not in visited:
								queue.put(lowercase_ )
								visited.add(lowercase_ )
					return visited


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

						testmod(verbose=True)

						lowerCAmelCase_     =      Graph()
						g.add_edge(0, 1)
						g.add_edge(0, 2)
						g.add_edge(1, 2)
						g.add_edge(2, 0)
						g.add_edge(2, 3)
						g.add_edge(3, 3)

						g.print_graph()
						# 0  :  1 -> 2
						# 1  :  2
						# 2  :  0 -> 3
						# 3  :  3

						assert sorted(g.bfs(2)) == [0, 1, 2, 3]











def       _a (		SCREAMING_SNAKE_CASE_				:							int , SCREAMING_SNAKE_CASE_				:							int	):
					if a < b:
										return gcd(SCREAMING_SNAKE_CASE_ , SCREAMING_SNAKE_CASE_	)
					if a % b == 0:
										return b
					return gcd(SCREAMING_SNAKE_CASE_ , a % b	)







def       _a (		SCREAMING_SNAKE_CASE_				:							int , SCREAMING_SNAKE_CASE_				:							int , SCREAMING_SNAKE_CASE_				:							int	):
					if y == 0:
										return 1
					__lowerCAmelCase							  =			power(SCREAMING_SNAKE_CASE_ , y // 2 , SCREAMING_SNAKE_CASE_	) % mod
					__lowerCAmelCase							  =			(temp * temp) % mod
					if y % 2 == 1:
										__lowerCAmelCase							  =			(temp * x) % mod
					return temp







def       _a (		SCREAMING_SNAKE_CASE_				:							int	):
					__lowerCAmelCase							  =			2
					while b < n:
										if gcd(SCREAMING_SNAKE_CASE_ , SCREAMING_SNAKE_CASE_	) == 1 and power(SCREAMING_SNAKE_CASE_ , n - 1 , SCREAMING_SNAKE_CASE_	) != 1:
															return False
										b += 1
					return True


if __name__ == "__main__":
					UpperCamelCase__            =     int(input("""Enter number: """).strip())
					if is_carmichael_number(number):
										print(f'''{number} is a Carmichael Number.''')
					else:
										print(f'''{number} is not a Carmichael Number.''')




