'''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 __lowerCAmelCase (							UpperCamelCase__				,  UpperCamelCase__				,  UpperCamelCase__				)	->    int:
    # Construct model
    if gpta_config_file == "":
        __lowerCamelCase		=  GPTaConfig()
    else:
        __lowerCamelCase		=  GPTaConfig.from_json_file(UpperCamelCase__				)
    __lowerCamelCase		=  GPTaModel(UpperCamelCase__				)

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

    # 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()				,  UpperCamelCase__				)
    print(f"""Save configuration file to {pytorch_config_dump_path}"""				)
    with open(UpperCamelCase__				,  '''w'''				,  encoding='''utf-8'''				) as f:
        f.write(config.to_json_string()				)


if __name__ == "__main__":
  __UpperCAmelCase     							=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."
      ),
  )
  __UpperCAmelCase     							=parser.parse_args()
  convert_gpta_checkpoint_to_pytorch(args.gpta_checkpoint_path, args.gpta_config_file, args.pytorch_dump_folder_path)








"""simple docstring"""






def 					_A			(__a = 50							) ->       int:
    """simple docstring"""






    SCREAMING_SNAKE_CASE_      :  Tuple    						=		[[0] * 3 for _ in range(length + 1							)]

    for row_length in range(length + 1							):
        for tile_length in range(2    ,				5							):
            for tile_start in range(row_length - tile_length + 1							):
                different_colour_ways_number[row_length][tile_length - 2] += (
                    different_colour_ways_number[row_length - tile_start - tile_length][
                        tile_length - 2
                    ]
                    + 1
                )

    return sum(different_colour_ways_number[length]							)


if __name__ == "__main__":
  print(f'''{solution() = }''')


