




import unittest
from dataclasses import dataclass
from typing import Optional

from transformers.utils import ModelOutput
@dataclass
class      _UpperCamelCase (			lowerCAmelCase						):
						UpperCAmelCase_            =						42
						UpperCAmelCase_            =						None
						UpperCAmelCase_            =						None



class      _UpperCamelCase (			unittest.TestCase						):
						def 		UpperCAmelCase_  (     self				:List[str] )       ->     Any:
							UpperCAmelCase__								=  ModelOutputTest(a=30 )
							self.assertEqual(x.a	, 30 )
							self.assertIsNone(x.b )
							self.assertIsNone(x.c )
							with self.assertRaises(lowerCamelCase ):
								UpperCAmelCase__								=  x.d
						def 		UpperCAmelCase_  (     self				:Optional[Any] )       ->     List[str]:
							UpperCAmelCase__								=  ModelOutputTest(a=30	, b=10 )
							self.assertEqual(x[0]	, 30 )
							self.assertEqual(x[1]	, 10 )
							self.assertEqual(x[:2]	, (30, 10) )
							self.assertEqual(x[:]	, (30, 10) )

							UpperCAmelCase__								=  ModelOutputTest(a=30	, c=10 )
							self.assertEqual(x[0]	, 30 )
							self.assertEqual(x[1]	, 10 )
							self.assertEqual(x[:2]	, (30, 10) )
							self.assertEqual(x[:]	, (30, 10) )
						def 		UpperCAmelCase_  (     self				:Optional[Any] )       ->     Any:
							UpperCAmelCase__								=  ModelOutputTest(a=30	, b=10 )
							self.assertEqual(x["a"]	, 30 )
							self.assertEqual(x["b"]	, 10 )
							with self.assertRaises(lowerCamelCase ):
								UpperCAmelCase__								=  x["c"]

							UpperCAmelCase__								=  ModelOutputTest(a=30	, c=10 )
							self.assertEqual(x["a"]	, 30 )
							self.assertEqual(x["c"]	, 10 )
							with self.assertRaises(lowerCamelCase ):
								UpperCAmelCase__								=  x["b"]
						def 		UpperCAmelCase_  (     self				:Any )       ->     List[str]:
							UpperCAmelCase__								=  ModelOutputTest(a=30 )
							self.assertEqual(list(x.keys() )	, ["a"] )
							self.assertEqual(list(x.values() )	, [30] )
							self.assertEqual(list(x.items() )	, [("a", 30)] )
							self.assertEqual(list(lowerCamelCase )	, ["a"] )

							UpperCAmelCase__								=  ModelOutputTest(a=30	, b=10 )
							self.assertEqual(list(x.keys() )	, ["a", "b"] )
							self.assertEqual(list(x.values() )	, [30, 10] )
							self.assertEqual(list(x.items() )	, [("a", 30), ("b", 10)] )
							self.assertEqual(list(lowerCamelCase )	, ["a", "b"] )

							UpperCAmelCase__								=  ModelOutputTest(a=30	, c=10 )
							self.assertEqual(list(x.keys() )	, ["a", "c"] )
							self.assertEqual(list(x.values() )	, [30, 10] )
							self.assertEqual(list(x.items() )	, [("a", 30), ("c", 10)] )
							self.assertEqual(list(lowerCamelCase )	, ["a", "c"] )

							with self.assertRaises(lowerCamelCase ):
								UpperCAmelCase__								=  x.update({"d": 20} )
							with self.assertRaises(lowerCamelCase ):
								del x["a"]
							with self.assertRaises(lowerCamelCase ):
								UpperCAmelCase__								=  x.pop("a" )
							with self.assertRaises(lowerCamelCase ):
								UpperCAmelCase__								=  x.setdefault("d"	, 32 )
						def 		UpperCAmelCase_  (     self				:List[str] )       ->     Union[str, Any]:
							UpperCAmelCase__								=  ModelOutputTest(a=30 )
							UpperCAmelCase__								=  10
							self.assertEqual(x.a	, 10 )
							self.assertEqual(x["a"]	, 10 )
						def 		UpperCAmelCase_  (     self				:str )       ->     Union[str, Any]:
							UpperCAmelCase__								=  ModelOutputTest(a=30 )
							UpperCAmelCase__								=  10
							self.assertEqual(x.a	, 10 )
							self.assertEqual(x["a"]	, 10 )
						def 		UpperCAmelCase_  (     self				:Optional[int] )       ->     int:
							UpperCAmelCase__								=  ModelOutputTest({"a": 30, "b": 10} )
							self.assertEqual(list(x.keys() )	, ["a", "b"] )
							self.assertEqual(x.a	, 30 )
							self.assertEqual(x.b	, 10 )







						def 		UpperCAmelCase_  (     self				:Optional[Any] )       ->     int:
							UpperCAmelCase__								=  ModelOutputTest([("a", 30), ("b", 10)] )
							self.assertEqual(list(x.keys() )	, ["a", "b"] )
							self.assertEqual(x.a	, 30 )
							self.assertEqual(x.b	, 10 )

							with self.assertRaises(lowerCamelCase ):
								UpperCAmelCase__								=  ModelOutputTest([("a", 30), (10, 10)] )

							UpperCAmelCase__								=  ModelOutputTest(a=(30, 30) )
							self.assertEqual(list(x.keys() )	, ["a"] )
							self.assertEqual(x.a	, (30, 30) )











def   lowerCAmelCase						(						_lowerCAmelCase							:				int  ,							_lowerCAmelCase							:				int		):




 """simple docstring"""







 if a < b:
  return gcd(_lowerCAmelCase  ,							_lowerCAmelCase		)
 if a % b == 0:
  return b
 return gcd(_lowerCAmelCase  ,							a % b		)



def   lowerCAmelCase						(						_lowerCAmelCase							:				int  ,							_lowerCAmelCase							:				int  ,							_lowerCAmelCase							:				int		):




 """simple docstring"""







 if y == 0:
  return 1
 UpperCAmelCase__								=  power(_lowerCAmelCase  ,							y // 2  ,							_lowerCAmelCase		) % mod
 UpperCAmelCase__								=  (temp * temp) % mod
 if y % 2 == 1:
  UpperCAmelCase__								=  (temp * x) % mod
 return temp



def   lowerCAmelCase						(						_lowerCAmelCase							:				int		):




 """simple docstring"""







 UpperCAmelCase__								=  2
 while b < n:
  if gcd(_lowerCAmelCase  ,							_lowerCAmelCase		) == 1 and power(_lowerCAmelCase  ,							n - 1  ,							_lowerCAmelCase		) != 1:
   return False
  b += 1
 return True


if __name__ == "__main__":
  _lowerCAmelCase  :				Dict						=				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.''')





