

import unittest

from transformers import GPTSwaTokenizer
from transformers.testing_utils import get_tests_dir, require_sentencepiece, require_tokenizers, slow

from ...test_tokenization_common import TokenizerTesterMixin


_UpperCAmelCase						:  List[str]									=			get_tests_dir("""fixtures/test_sentencepiece_with_bytefallback.model""")







@require_sentencepiece
@require_tokenizers
class 					lowercase							(			lowercase_      ,    unittest.TestCase     ):
				__SCREAMING_SNAKE_CASE   :					str			     =     GPTSwaTokenizer
				__SCREAMING_SNAKE_CASE   :					List[Any]			     =     False
				__SCREAMING_SNAKE_CASE   :					str			     =     True
				__SCREAMING_SNAKE_CASE   :					Optional[int]			     =     False




				def        a				(   self			):
											super().setUp()

											# We have a SentencePiece fixture for testing
											snake_case_     							=       GPTSwaTokenizer(snake_case ,  eos_token='<unk>' ,  bos_token='<unk>' ,  pad_token='<unk>'			)

											tokenizer.save_pretrained(self.tmpdirname			)




				def        a				(   self ,  snake_case			):
											snake_case_     							=       'This is a test'
											snake_case_     							=       'This is a test'
											return input_text, output_text




				def        a				(   self			):
											snake_case_     							=       '<s>'
											snake_case_     							=       1

											self.assertEqual(self.get_tokenizer()._convert_token_to_id(snake_case			) ,  snake_case			)
											self.assertEqual(self.get_tokenizer()._convert_id_to_token(snake_case			) ,  snake_case			)




				def        a				(   self			):
											snake_case_     							=       list(self.get_tokenizer().get_vocab().keys()			)

											self.assertEqual(vocab_keys[0] ,  '<unk>'			)
											self.assertEqual(vocab_keys[1] ,  '<s>'			)
											self.assertEqual(vocab_keys[-1] ,  'j'			)
											self.assertEqual(len(snake_case			) ,  2000			)




				def        a				(   self			):
											self.assertEqual(self.get_tokenizer().vocab_size ,  2000			)




				def        a				(   self			):
											snake_case_     							=       GPTSwaTokenizer(snake_case			)

											snake_case_     							=       tokenizer.tokenize('This is a test'			)
											self.assertListEqual(snake_case ,  ['▁This', '▁is', '▁a', '▁t', 'est']			)

											self.assertListEqual(tokenizer.convert_tokens_to_ids(snake_case			) ,  [465, 287, 265, 631, 842]			)

											snake_case_     							=       tokenizer.tokenize('I was born in 92000, and this is falsé.'			)
											# fmt: off
											self.assertListEqual(
											    snake_case ,  ['▁I', '▁was', '▁bor', 'n', '▁in', '▁', '<0x39>', '2', '0', '0', '0', ',', '▁and', '▁this', '▁is', '▁f', 'al', 's', '<0xC3>', '<0xA9>', '.'] ,  )
											# fmt: on

											snake_case_     							=       tokenizer.convert_tokens_to_ids(snake_case			)
											self.assertListEqual(
											    snake_case ,  [262, 272, 1525, 286, 271, 268, 60, 916, 633, 633, 633, 259, 266, 301, 287, 384, 367, 263, 198, 172, 260] ,  )

											snake_case_     							=       tokenizer.convert_ids_to_tokens(snake_case			)
											# fmt: off
											self.assertListEqual(
											    snake_case ,  ['▁I', '▁was', '▁bor', 'n', '▁in', '▁', '<0x39>', '2', '0', '0', '0', ',', '▁and', '▁this', '▁is', '▁f', 'al', 's', '<0xC3>', '<0xA9>', '.']			)
											# fmt: on




				def        a				(   self			):
											snake_case_     							=       GPTSwaTokenizer(snake_case			)
											snake_case_     							=       ['This is a test', 'I was born in 92000, and this is falsé.']
											snake_case_     							=       [
											    [465, 287, 265, 631, 842],
											    [262, 272, 1525, 286, 271, 268, 60, 916, 633, 633, 633, 259, 266, 301, 287, 384, 367, 263, 198, 172, 260],
											]

											# Test that encode_fast returns the same as tokenize + convert_tokens_to_ids
											for text, expected_ids in zip(snake_case ,  snake_case			):
																		self.assertListEqual(tokenizer.encode_fast(snake_case			) ,  snake_case			)

											# Test that decode_fast returns the input text
											for text, token_ids in zip(snake_case ,  snake_case			):
																		self.assertEqual(tokenizer.decode_fast(snake_case			) ,  snake_case			)




				@slow
				def        a				(   self			):
											snake_case_     							=       [
											    '<|python|>def fibonacci(n)\n    if n < 0:\n        print(\'Incorrect input\')',
											    'Hey there, how are you doing this fine day?',
											    'This is a text with a trailing spaces followed by a dot     .',
											    'Häj sväjs lillebrör! =)',
											    'Det är inget fel på Mr. Cool',
											]

											# fmt: off
											snake_case_     							=       {'input_ids': [[6_3423, 5, 6811, 1_4954, 282, 816, 3821, 6_3466, 6_3425, 6_3462, 18, 6_3978, 678, 301, 1320, 6_3423, 6_3455, 6_3458, 18, 6_3982, 4246, 3940, 1901, 4_7789, 5547, 1_8994], [1_9630, 1100, 6_3446, 1342, 633, 544, 4488, 593, 5102, 2416, 6_3495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1652, 428, 268, 1936, 515, 268, 5_8593, 2_2413, 9106, 546, 268, 3_3213, 6_3979, 698, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [5_5130, 6_3450, 924, 6_3449, 2249, 4062, 1558, 318, 6_3504, 2_1498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [509, 377, 2827, 2559, 332, 6575, 6_3443, 2_6801, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'token_type_ids': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], 'attention_mask': [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]}
											# fmt: on
											self.tokenizer_integration_test_util(
											    expected_encoding=snake_case ,  model_name='AI-Sweden/gpt-sw3-126m' ,  sequences=snake_case ,  )







def    __lowerCamelCase      (					UpperCamelCase__ = 1000 ):







							'''simple docstring'''






							snake_case_     							=       2**power
							snake_case_     							=       0
							while n:
														snake_case_							,       snake_case_     							=       r + n % 10, n // 10
							return r


if __name__ == "__main__":
					print(solution(int(str(input()).strip())))




