



'''simple docstring'''


import argparse
import json

import numpy
import torch

from transformers.models.xlm.tokenization_xlm import VOCAB_FILES_NAMES
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()






def  UpperCAmelCase_       (		lowercase__       ,	lowercase__       ):


     '''simple docstring'''







     a_       		=torch.load(lowercase__       ,	map_location="cpu"       )

     a_       		=chkpt["model"]

     # We have the base model one level deeper than the original XLM repository
     a_       		={}
     for k, v in state_dict.items():
          if "pred_layer" in k:
               a_       		=v
          else:
               a_       		=v

     a_       		=chkpt["params"]
     a_       		={n: v for n, v in config.items() if not isinstance(lowercase__       ,	(torch.FloatTensor, numpy.ndarray)       )}

     a_       		=chkpt["dico_word2id"]
     a_       		={s + "</w>" if s.find("@@"       ) == -1 and i > 1_3 else s.replace("@@"       ,	""       ): i for s, i in vocab.items()}

     # Save pytorch-model
     a_       		=pytorch_dump_folder_path + "/" + WEIGHTS_NAME
     a_       		=pytorch_dump_folder_path + "/" + CONFIG_NAME
     a_       		=pytorch_dump_folder_path + "/" + VOCAB_FILES_NAMES["vocab_file"]

     print(F"""Save PyTorch model to {pytorch_weights_dump_path}"""       )
     torch.save(lowercase__       ,	lowercase__       )

     print(F"""Save configuration file to {pytorch_config_dump_path}"""       )
     with open(lowercase__       ,	"w"       ,	encoding="utf-8"       ) as f:
          f.write(json.dumps(lowercase__       ,	indent=2       ) + "\n"       )

     print(F"""Save vocab file to {pytorch_config_dump_path}"""       )
     with open(lowercase__       ,	"w"       ,	encoding="utf-8"       ) as f:
          f.write(json.dumps(lowercase__       ,	indent=2       ) + "\n"       )


if __name__ == "__main__":
  lowercase							       =			argparse.ArgumentParser()
  # Required parameters
  parser.add_argument(
      '''--xlm_checkpoint_path''', default=None, type=str, required=True, help='''Path the official PyTorch dump.'''
  )
  parser.add_argument(
      '''--pytorch_dump_folder_path''', default=None, type=str, required=True, help='''Path to the output PyTorch model.'''
  )
  lowercase							       =			parser.parse_args()
  convert_xlm_checkpoint_to_pytorch(args.xlm_checkpoint_path, args.pytorch_dump_folder_path)







'''simple docstring'''


from collections.abc import Generator






def  UpperCAmelCase_       (		):


     '''simple docstring'''







     a_		,						a_       		=0, 1
     while True:
          a_		,						a_       		=b, a + b
          yield b






def  UpperCAmelCase_       (		lowercase__ = 1_0_0_0       ):


     '''simple docstring'''







     a_       		=1
     a_       		=fibonacci_generator()
     while len(str(next(lowercase__       )       )       ) < n:
          answer += 1
     return answer + 1


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


