


'''simple docstring'''




import argparse

import torch

from transformers import GPTaConfig, GPTaModel, load_tf_weights_in_gpta
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()





def 	a_					( lowerCamelCase	:     Tuple	, lowerCamelCase	:     List[Any]	, lowerCamelCase	:     Optional[int]				):
   # Construct model
   if gpta_config_file == "":
      lowerCAmelCase     =			GPTaConfig()
   else:
      lowerCAmelCase     =			GPTaConfig.from_json_file(_A				)
   lowerCAmelCase     =			GPTaModel(_A				)

   # Load weights from numpy
   load_tf_weights_in_gpta(_A	, _A	, _A				)

   # Save pytorch-model
   lowerCAmelCase     =			pytorch_dump_folder_path + '/' + WEIGHTS_NAME
   lowerCAmelCase     =			pytorch_dump_folder_path + '/' + CONFIG_NAME
   print(f'''Save PyTorch model to {pytorch_weights_dump_path}'''				)
   torch.save(model.state_dict()	, _A				)
   print(f'''Save configuration file to {pytorch_config_dump_path}'''				)
   with open(_A	, 'w'	, encoding='utf-8'				) as f:
      f.write(config.to_json_string()				)


if __name__ == "__main__":
       __snake_case    						=argparse.ArgumentParser()
       # Required parameters
       parser.add_argument(
           """--gpt2_checkpoint_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(
           """--gpt2_config_file""",
           default="""""",
           type=str,
           help=(
               """An optional config json file corresponding to the pre-trained OpenAI model. \n"""
               """This specifies the model architecture."""
           ),
       )
       __snake_case    						=parser.parse_args()
       convert_gpta_checkpoint_to_pytorch(args.gpta_checkpoint_path, args.gpta_config_file, args.pytorch_dump_folder_path)











def __UpperCamelCase			(       _A = 1000000  ):
						lowerCAmelCase_      			=  1
						lowerCAmelCase_      			=  1
						lowerCAmelCase_      			=  {1: 1}

						for inputa in range(2 ,  _A  ):
												lowerCAmelCase_      			=  0
												lowerCAmelCase_      			=  inputa

												while True:
																		if number in counters:
																								counter += counters[number]
																								break
																		if number % 2 == 0:
																								number //= 2
																								counter += 1
																		else:
																								lowerCAmelCase_      			=  (3 * number) + 1
																								counter += 1

												if inputa not in counters:
																		lowerCAmelCase_      			=  counter

												if counter > pre_counter:
																		lowerCAmelCase_      			=  inputa
																		lowerCAmelCase_      			=  counter
						return largest_number


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




