


"""simple docstring"""






import argparse

import torch

from transformers import OpenAIGPTConfig, OpenAIGPTModel, load_tf_weights_in_openai_gpt
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()







def        lowerCamelCase_(		_lowerCamelCase			,		_lowerCamelCase			,		_lowerCamelCase       )    ->     List[str]:
   '''simple docstring'''





   if openai_config_file == "":
      _lowerCamelCase   :				Optional[Any]							=     OpenAIGPTConfig()
   else:
      _lowerCamelCase   :				Tuple							=     OpenAIGPTConfig.from_json_file(_lowerCamelCase       )
   _lowerCamelCase   :				List[Any]							=     OpenAIGPTModel(_lowerCamelCase       )

   # Load weights from numpy
   load_tf_weights_in_openai_gpt(_lowerCamelCase			,		_lowerCamelCase			,		_lowerCamelCase       )

   # Save pytorch-model
   _lowerCamelCase   :				Optional[int]							=     pytorch_dump_folder_path + "/" + WEIGHTS_NAME
   _lowerCamelCase   :				List[str]							=     pytorch_dump_folder_path + "/" + CONFIG_NAME
   print(F"""Save PyTorch model to {pytorch_weights_dump_path}"""       )
   torch.save(model.state_dict()			,		_lowerCamelCase       )
   print(F"""Save configuration file to {pytorch_config_dump_path}"""       )
   with open(_lowerCamelCase			,		"w"			,		encoding="utf-8"       ) as f:
      f.write(config.to_json_string()       )


if __name__ == "__main__":
  _lowerCAmelCase							:    str					   =	argparse.ArgumentParser()
  # Required parameters
  parser.add_argument(
      '''--openai_checkpoint_folder_path''',
      default=None,
      type=str,
      required=True,
      help='''Path to the TensorFlow checkpoint path.''',
  )
  parser.add_argument(
      '''--pytorch_dump_folder_path''', default=None, type=str, required=True, help='''Path to the output PyTorch model.'''
  )
  parser.add_argument(
      '''--openai_config_file''',
      default='''''',
      type=str,
      help=(
          '''An optional config json file corresponding to the pre-trained OpenAI model. \n'''
          '''This specifies the model architecture.'''
      ),
  )
  _lowerCAmelCase							:    str					   =	parser.parse_args()
  convert_openai_checkpoint_to_pytorch(
      args.openai_checkpoint_folder_path, args.openai_config_file, args.pytorch_dump_folder_path
  )




def  lowerCAmelCase_	(lowerCAmelCase__:		int  ):





			"""simple docstring"""


			if n == 1 or not isinstance(lowerCAmelCase__		,						lowerCAmelCase__  ):
						return 0
			elif n == 2:
						return 1
			else:
						UpperCAmelCase_:		Optional[int]							      =     [0, 1]
						for i in range(2		,						n + 1  ):
									sequence.append(sequence[i - 1] + sequence[i - 2]  )

						return sequence[n]







def  lowerCAmelCase_	(lowerCAmelCase__:		int  ):





			"""simple docstring"""


			UpperCAmelCase_:		str							      =     0
			UpperCAmelCase_:		str							      =     2

			while digits < n:
						index += 1
						UpperCAmelCase_:		Union[str, Any]							      =     len(str(fibonacci(lowerCAmelCase__  )  )  )

			return index







def  lowerCAmelCase_	(lowerCAmelCase__:		int = 1_0_0_0  ):





			"""simple docstring"""


			return fibonacci_digits_index(lowerCAmelCase__  )


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






