




"""simple docstring"""




import json
import os
import unittest

from transformers.models.xlm.tokenization_xlm import VOCAB_FILES_NAMES, XLMTokenizer
from transformers.testing_utils import slow

from ...test_tokenization_common import TokenizerTesterMixin






class     __magic_name__							(       UpperCAmelCase__						,					unittest.TestCase				):






				'''simple docstring'''
				__UpperCamelCase			  =						XLMTokenizer
				__UpperCamelCase			  =						False





				def    _lowerCAmelCase				(       self ):





							"""simple docstring"""
							super().setUp()

							# Adapted from Sennrich et al. 2015 and https://github.com/rsennrich/subword-nmt
							lowerCamelCase			      =					[
							    """l""",
							    """o""",
							    """w""",
							    """e""",
							    """r""",
							    """s""",
							    """t""",
							    """i""",
							    """d""",
							    """n""",
							    """w</w>""",
							    """r</w>""",
							    """t</w>""",
							    """lo""",
							    """low""",
							    """er</w>""",
							    """low</w>""",
							    """lowest</w>""",
							    """newer</w>""",
							    """wider</w>""",
							    """<unk>""",
							]
							lowerCamelCase			      =					dict(zip(_a		, range(len(_a ) ) ) )
							lowerCamelCase			      =					["""l o 123""", """lo w 1456""", """e r</w> 1789""", """"""]

							lowerCamelCase			      =					os.path.join(self.tmpdirname		, VOCAB_FILES_NAMES["""vocab_file"""] )
							lowerCamelCase			      =					os.path.join(self.tmpdirname		, VOCAB_FILES_NAMES["""merges_file"""] )
							with open(self.vocab_file		, """w""" ) as fp:
										fp.write(json.dumps(_a ) )
							with open(self.merges_file		, """w""" ) as fp:
										fp.write("""\n""".join(_a ) )





				def    _lowerCAmelCase				(       self		, _a ):





							"""simple docstring"""
							lowerCamelCase			      =					"""lower newer"""
							lowerCamelCase			      =					"""lower newer"""
							return input_text, output_text





				def    _lowerCAmelCase				(       self ):





							"""simple docstring"""
							lowerCamelCase			      =					XLMTokenizer(self.vocab_file		, self.merges_file )

							lowerCamelCase			      =					"""lower"""
							lowerCamelCase			      =					["""low""", """er</w>"""]
							lowerCamelCase			      =					tokenizer.tokenize(_a )
							self.assertListEqual(_a		, _a )

							lowerCamelCase			      =					tokens + ["""<unk>"""]
							lowerCamelCase			      =					[14, 15, 20]
							self.assertListEqual(tokenizer.convert_tokens_to_ids(_a )		, _a )





				@slow
				def    _lowerCAmelCase				(       self ):





							"""simple docstring"""
							lowerCamelCase			      =					XLMTokenizer.from_pretrained("""xlm-mlm-en-2048""" )

							lowerCamelCase			      =					tokenizer.encode("""sequence builders"""		, add_special_tokens=_a )
							lowerCamelCase			      =					tokenizer.encode("""multi-sequence build"""		, add_special_tokens=_a )

							lowerCamelCase			      =					tokenizer.build_inputs_with_special_tokens(_a )
							lowerCamelCase			      =					tokenizer.build_inputs_with_special_tokens(_a		, _a )

							assert encoded_sentence == [0] + text + [1]
							assert encoded_pair == [0] + text + [1] + text_a + [1]









"""simple docstring"""




from collections.abc import Generator



def     a__ (				)						->					Generator[int, None, None]:
			lowerCamelCase      ,   lowerCamelCase			      =					0, 1
			while True:
						lowerCamelCase      ,   lowerCamelCase			      =					b, a + b
						yield b



def     a__ (				snake_case__ = 10_00				)						->					int:
			lowerCamelCase			      =					1
			lowerCamelCase			      =					fibonacci_generator()
			while len(str(next(snake_case__				)				)				) < n:
						answer += 1
			return answer + 1


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



