import argparse

import torch

from transformers import YosoConfig, YosoForMaskedLM





def 				UpperCAmelCase						(    lowercase							):







				"""simple docstring"""



				if "model" in orig_key:
								__lowercase 			=							orig_key.replace('''model.'''							,			''''''							)
				if "norm1" in orig_key:
								__lowercase 			=							orig_key.replace('''norm1'''							,			'''attention.output.LayerNorm'''							)
				if "norm2" in orig_key:
								__lowercase 			=							orig_key.replace('''norm2'''							,			'''output.LayerNorm'''							)
				if "norm" in orig_key:
								__lowercase 			=							orig_key.replace('''norm'''							,			'''LayerNorm'''							)
				if "transformer" in orig_key:
								__lowercase 			=							orig_key.split('''.'''							)[0].split('''_'''							)[-1]
								__lowercase 			=							orig_key.replace(F"transformer_{layer_num}"							,			F"encoder.layer.{layer_num}"							)
				if "mha.attn" in orig_key:
								__lowercase 			=							orig_key.replace('''mha.attn'''							,			'''attention.self'''							)
				if "mha" in orig_key:
								__lowercase 			=							orig_key.replace('''mha'''							,			'''attention'''							)
				if "W_q" in orig_key:
								__lowercase 			=							orig_key.replace('''W_q'''							,			'''self.query'''							)
				if "W_k" in orig_key:
								__lowercase 			=							orig_key.replace('''W_k'''							,			'''self.key'''							)
				if "W_v" in orig_key:
								__lowercase 			=							orig_key.replace('''W_v'''							,			'''self.value'''							)
				if "ff1" in orig_key:
								__lowercase 			=							orig_key.replace('''ff1'''							,			'''intermediate.dense'''							)
				if "ff2" in orig_key:
								__lowercase 			=							orig_key.replace('''ff2'''							,			'''output.dense'''							)
				if "ff" in orig_key:
								__lowercase 			=							orig_key.replace('''ff'''							,			'''output.dense'''							)
				if "mlm_class" in orig_key:
								__lowercase 			=							orig_key.replace('''mlm.mlm_class'''							,			'''cls.predictions.decoder'''							)
				if "mlm" in orig_key:
								__lowercase 			=							orig_key.replace('''mlm'''							,			'''cls.predictions.transform'''							)
				if "cls" not in orig_key:
								__lowercase 			=							'''yoso.''' + orig_key

				return orig_key





def 				UpperCAmelCase						(    lowercase							,			lowercase							):







				"""simple docstring"""



				for key in orig_state_dict.copy().keys():
								__lowercase 			=							orig_state_dict.pop(snake_case__							)

								if ("pooler" in key) or ("sen_class" in key):
												continue
								else:
												__lowercase 			=							val

				__lowercase 			=							orig_state_dict['''cls.predictions.decoder.bias''']
				__lowercase 			=							torch.arange(snake_case__							).expand((1, -1)							) + 2

				return orig_state_dict





def 				UpperCAmelCase						(    lowercase							,			lowercase							,			lowercase							):







				"""simple docstring"""



				__lowercase 			=							torch.load(snake_case__							,			map_location='''cpu'''							)['''model_state_dict''']
				__lowercase 			=							YosoConfig.from_json_file(snake_case__							)
				__lowercase 			=							YosoForMaskedLM(snake_case__							)

				__lowercase 			=							convert_checkpoint_helper(config.max_position_embeddings							,			snake_case__							)

				print(model.load_state_dict(snake_case__							)							)
				model.eval()
				model.save_pretrained(snake_case__							)

				print(F"Checkpoint successfuly converted. Model saved at {pytorch_dump_path}"							)


if __name__ == "__main__":
		__a  :     Tuple       =  argparse.ArgumentParser()
		# Required parameters
		parser.add_argument(
		    """--pytorch_model_path""", default=None, type=str, required=True, help="""Path to YOSO pytorch checkpoint."""
		)
		parser.add_argument(
		    """--config_file""",
		    default=None,
		    type=str,
		    required=True,
		    help="""The json file for YOSO model config.""",
		)
		parser.add_argument(
		    """--pytorch_dump_path""", default=None, type=str, required=True, help="""Path to the output PyTorch model."""
		)
		__a  :     List[str]       =  parser.parse_args()
		convert_yoso_checkpoint(args.pytorch_model_path, args.config_file, args.pytorch_dump_path)





"""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())))



