





from ...configuration_utils import PretrainedConfig
from ...utils import logging


__lowerCamelCase       :     Optional[int]   =     logging.get_logger(__name__)

__lowerCamelCase       :     str   =     {
    """google/fnet-base""": """https://huggingface.co/google/fnet-base/resolve/main/config.json""",
    """google/fnet-large""": """https://huggingface.co/google/fnet-large/resolve/main/config.json"""
    # See all FNet models at https://huggingface.co/models?filter=fnet
}



class 					A__   (       __snake_case			):
      _UpperCAmelCase	:str						    =   'fnet'





      def __init__( self       ,							A_=3_2000       ,							A_=768       ,							A_=12       ,							A_=3072       ,							A_="gelu_new"       ,							A_=0.1       ,							A_=512       ,							A_=4       ,							A_=0.02       ,							A_=1e-12       ,							A_=False       ,							A_=512       ,							A_=3       ,							A_=1       ,							A_=2       ,							**A_       ,							):
       '''simple docstring'''




       super().__init__(pad_token_id=A_       ,							bos_token_id=A_       ,							eos_token_id=A_       ,							**A_   )

       UpperCamelCase	:					Any       	=   vocab_size
       UpperCamelCase	:					Tuple       	=   max_position_embeddings
       UpperCamelCase	:					Any       	=   hidden_size
       UpperCamelCase	:					List[str]       	=   num_hidden_layers
       UpperCamelCase	:					Any       	=   intermediate_size
       UpperCamelCase	:					Optional[Any]       	=   hidden_act
       UpperCamelCase	:					int       	=   hidden_dropout_prob
       UpperCamelCase	:					Dict       	=   initializer_range
       UpperCamelCase	:					Union[str, Any]       	=   type_vocab_size
       UpperCamelCase	:					str       	=   layer_norm_eps
       UpperCamelCase	:					List[str]       	=   use_tpu_fourier_optimizations
       UpperCamelCase	:					Optional[int]       	=   tpu_short_seq_length







def 		A_				(     _lowerCAmelCase = 50     )						-> int:
 UpperCamelCase	:					List[Any]       	=   [[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() = }""")
