





"""simple docstring"""






lowerCAmelCase_			=							[0, 2, 4, 6, 8]
lowerCAmelCase_			=							[1, 3, 5, 7, 9]

def       __lowerCamelCase    (       SCREAMING_SNAKE_CASE,SCREAMING_SNAKE_CASE,SCREAMING_SNAKE_CASE,SCREAMING_SNAKE_CASE							)		->       int:






       """simple docstring"""




       if remaining_length == 0:
              if digits[0] == 0 or digits[-1] == 0:
                     return 0

              for i in range(length // 2 - 1,-1,-1							):
                     remainder += digits[i] + digits[length - i - 1]

                     if remainder % 2 == 0:
                            return 0

                     remainder //= 10

              return 1

       if remaining_length == 1:
              if remainder % 2 == 0:
                     return 0

              _UpperCAmelCase     =     0
              for digit in range(10							):
                     _UpperCAmelCase     =     digit
                     result += reversible_numbers(
                         0,(remainder + 2 * digit) // 10,SCREAMING_SNAKE_CASE,SCREAMING_SNAKE_CASE							)
              return result

       _UpperCAmelCase     =     0
       for digita in range(10							):
              _UpperCAmelCase     =     digita

              if (remainder + digita) % 2 == 0:
                     _UpperCAmelCase     =     ODD_DIGITS
              else:
                     _UpperCAmelCase     =     EVEN_DIGITS

              for digita in other_parity_digits:
                     _UpperCAmelCase     =     digita
                     result += reversible_numbers(
                         remaining_length - 2,(remainder + digita + digita) // 10,SCREAMING_SNAKE_CASE,SCREAMING_SNAKE_CASE,)
       return result

def       __lowerCamelCase    (       SCREAMING_SNAKE_CASE = 9							)		->       int:






       """simple docstring"""




       _UpperCAmelCase     =     0
       for length in range(1,max_power + 1							):
              result += reversible_numbers(SCREAMING_SNAKE_CASE,0,[0] * length,SCREAMING_SNAKE_CASE							)
       return result


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













"""simple docstring"""






import argparse

import torch
from torch import nn

from transformers import MaMaaaConfig, MaMaaaForConditionalGeneration

def       __lowerCamelCase    (       SCREAMING_SNAKE_CASE							)		->       str:






       """simple docstring"""




       _UpperCAmelCase     =     [
           'encoder.version',
           'decoder.version',
           'model.encoder.version',
           'model.decoder.version',
           'decoder.output_projection.weight',
           '_float_tensor',
           'encoder.embed_positions._float_tensor',
           'decoder.embed_positions._float_tensor',
       ]
       for k in ignore_keys:
              state_dict.pop(SCREAMING_SNAKE_CASE,SCREAMING_SNAKE_CASE							)

def       __lowerCamelCase    (       SCREAMING_SNAKE_CASE							)		->       List[Any]:






       """simple docstring"""




       _UpperCAmelCase    ,							_UpperCAmelCase     =     emb.weight.shape
       _UpperCAmelCase     =     nn.Linear(SCREAMING_SNAKE_CASE,SCREAMING_SNAKE_CASE,bias=SCREAMING_SNAKE_CASE							)
       _UpperCAmelCase     =     emb.weight.data
       return lin_layer

def       __lowerCamelCase    (       SCREAMING_SNAKE_CASE							)		->       int:






       """simple docstring"""




       _UpperCAmelCase     =     torch.load(SCREAMING_SNAKE_CASE,map_location='cpu'							)
       _UpperCAmelCase     =     mam_aaa['args'] or mam_aaa['cfg']['model']
       _UpperCAmelCase     =     mam_aaa['model']
       remove_ignore_keys_(SCREAMING_SNAKE_CASE							)
       _UpperCAmelCase     =     state_dict['encoder.embed_tokens.weight'].shape[0]

       _UpperCAmelCase     =     MaMaaaConfig(
           vocab_size=SCREAMING_SNAKE_CASE,max_position_embeddings=1024,encoder_layers=args.encoder_layers,decoder_layers=args.decoder_layers,encoder_attention_heads=args.encoder_attention_heads,decoder_attention_heads=args.decoder_attention_heads,encoder_ffn_dim=args.encoder_ffn_embed_dim,decoder_ffn_dim=args.decoder_ffn_embed_dim,d_model=args.encoder_embed_dim,encoder_layerdrop=args.encoder_layerdrop,decoder_layerdrop=args.decoder_layerdrop,dropout=args.dropout,attention_dropout=args.attention_dropout,activation_dropout=args.activation_dropout,activation_function='relu',)

       _UpperCAmelCase     =     state_dict['decoder.embed_tokens.weight']
       _UpperCAmelCase     =     MaMaaaForConditionalGeneration(SCREAMING_SNAKE_CASE							)
       model.model.load_state_dict(SCREAMING_SNAKE_CASE,strict=SCREAMING_SNAKE_CASE							)
       _UpperCAmelCase     =     make_linear_from_emb(model.model.shared							)

       return model


if __name__ == "__main__":
    lowerCAmelCase_			=							argparse.ArgumentParser()
    # Required parameters
    parser.add_argument('''fairseq_path''', type=str, help='''path to a model.pt on local filesystem.''')
    parser.add_argument('''pytorch_dump_folder_path''', default=None, type=str, help='''Path to the output PyTorch model.''')
    lowerCAmelCase_			=							parser.parse_args()
    lowerCAmelCase_			=							convert_fairseq_mamaaa_checkpoint_from_disk(args.fairseq_pathß)
    model.save_pretrained(args.pytorch_dump_folder_path)






