



import argparse

import torch

from transformers import ImageGPTConfig, ImageGPTForCausalLM, load_tf_weights_in_imagegpt
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()







def  _snake_case			(							__snake_case       ,	__snake_case       ,	__snake_case     )  ->  List[Any]:






      '''simple docstring'''







      UpperCAmelCase_	:						Optional[int]					   =		{"small": (5_1_2, 8, 2_4), "medium": (1_0_2_4, 8, 3_6), "large": (1_5_3_6, 1_6, 4_8)}
      UpperCAmelCase_	:						List[Any]					   =		MODELS[model_size]  # set model hyperparameters
      UpperCAmelCase_	:						Tuple					   =		ImageGPTConfig(n_embd=snake_case__       ,	n_layer=snake_case__       ,	n_head=snake_case__     )
      UpperCAmelCase_	:						Union[str, Any]					   =		ImageGPTForCausalLM(snake_case__     )

      # Load weights from numpy
      load_tf_weights_in_imagegpt(snake_case__       ,	snake_case__       ,	snake_case__     )

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


if __name__ == "__main__":
   __lowerCamelCase								=      argparse.ArgumentParser()
   # Required parameters
   parser.add_argument(
       '''--imagegpt_checkpoint_path''',
       default=None,
       type=str,
       required=True,
       help='''Path to the TensorFlow checkpoint path.''',
   )
   parser.add_argument(
       '''--model_size''',
       default=None,
       type=str,
       required=True,
       help='''Size of the model (can be either \'small\', \'medium\' or \'large\').''',
   )
   parser.add_argument(
       '''--pytorch_dump_folder_path''', default=None, type=str, required=True, help='''Path to the output PyTorch model.'''
   )
   __lowerCamelCase								=      parser.parse_args()
   convert_imagegpt_checkpoint_to_pytorch(
       args.imagegpt_checkpoint_path, args.model_size, args.pytorch_dump_folder_path
   )






'''simple docstring'''






import itertools

def      __lowerCAmelCase   (       snake_case__		):
			return (
			    int("".join(combination[0:2]		)		) * int("".join(combination[2:5]		)		)
			    == int("".join(combination[5:9]		)		)
			) or (
			    int("".join(combination[0]		)		) * int("".join(combination[1:5]		)		)
			    == int("".join(combination[5:9]		)		)
			)

def      __lowerCAmelCase   (       ):
			return sum(
			    {
			        int("".join(pandigital[5:9]		)		)
			        for pandigital in itertools.permutations("123456789"		)
			        if is_combination_valid(snake_case__		)
			    }		)


if __name__ == "__main__":
				print(solution())



