

from typing import Callable, Optional, Union

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


_lowerCamelCase							=logging.get_logger(__name__)

_lowerCamelCase							={
    "microsoft/prophetnet-large-uncased": (
        "https://huggingface.co/microsoft/prophetnet-large-uncased/resolve/main/config.json"
    ),
}



class 						a_			(				lowerCamelCase_	):



      """simple docstring"""







      __UpperCAmelCase     						= 'prophetnet'
      __UpperCAmelCase     						= ['past_key_values']
      __UpperCAmelCase     						= {
          'num_attention_heads': 'num_encoder_attention_heads',
      }
      def __init__( self	:				Tuple     ,snake_case	:				Optional[float] = 0.1     ,snake_case	:				Optional[Union[str, Callable]] = "gelu"     ,snake_case	:				Optional[int] = 30522     ,snake_case	:				Optional[int] = 1024     ,snake_case	:				Optional[int] = 4096     ,snake_case	:				Optional[int] = 12     ,snake_case	:				Optional[int] = 16     ,snake_case	:				Optional[int] = 4096     ,snake_case	:				Optional[int] = 12     ,snake_case	:				Optional[int] = 16     ,snake_case	:				Optional[float] = 0.1     ,snake_case	:				Optional[float] = 0.1     ,snake_case	:				Optional[int] = 512     ,snake_case	:				Optional[float] = 0.02     ,snake_case	:				Optional[bool] = True     ,snake_case	:				Optional[bool] = True     ,snake_case	:				Optional[int] = 0     ,snake_case	:				Optional[int] = 2     ,snake_case	:				Optional[int] = 32     ,snake_case	:				Optional[int] = 128     ,snake_case	:				Optional[bool] = False     ,snake_case	:				Optional[float] = 0.0     ,snake_case	:				Optional[bool] = True     ,snake_case	:				Optional[int] = 0     ,snake_case	:				Optional[int] = 1     ,snake_case	:				Optional[int] = 2     ,**snake_case	:				Dict     ,):
           SCREAMING_SNAKE_CASE 		=vocab_size
           SCREAMING_SNAKE_CASE 		=hidden_size
           SCREAMING_SNAKE_CASE 		=encoder_ffn_dim
           SCREAMING_SNAKE_CASE 		=num_encoder_layers
           SCREAMING_SNAKE_CASE 		=num_encoder_attention_heads
           SCREAMING_SNAKE_CASE 		=decoder_ffn_dim
           SCREAMING_SNAKE_CASE 		=num_decoder_layers
           SCREAMING_SNAKE_CASE 		=num_decoder_attention_heads
           SCREAMING_SNAKE_CASE 		=max_position_embeddings
           SCREAMING_SNAKE_CASE 		=init_std  # Normal(0, this parameter)
           SCREAMING_SNAKE_CASE 		=activation_function

           # parameters for prophetnet
           SCREAMING_SNAKE_CASE 		=ngram
           SCREAMING_SNAKE_CASE 		=num_buckets
           SCREAMING_SNAKE_CASE 		=relative_max_distance
           SCREAMING_SNAKE_CASE 		=disable_ngram_loss
           SCREAMING_SNAKE_CASE 		=eps

           # 3 Types of Dropout
           SCREAMING_SNAKE_CASE 		=attention_dropout
           SCREAMING_SNAKE_CASE 		=activation_dropout
           SCREAMING_SNAKE_CASE 		=dropout

           SCREAMING_SNAKE_CASE 		=use_cache

           super().__init__(
               pad_token_id=snake_case     ,bos_token_id=snake_case     ,eos_token_id=snake_case     ,is_encoder_decoder=snake_case     ,add_cross_attention=snake_case     ,decoder_start_token_id=snake_case     ,**snake_case     ,)
      @property
      def 			_lowerCAmelCase	( self	:				str							):
           return self.num_encoder_layers + self.num_decoder_layers


      @num_hidden_layers.setter
      def 			_lowerCAmelCase	( self	:				Any     ,snake_case	:				int							):
           raise NotImplementedError(
               'This model does not support the setting of `num_hidden_layers`. Please set `num_encoder_layers` and'
               ' `num_decoder_layers`.'							)




def      snake_case__							(  lowerCAmelCase_ = 100     ):





     """simple docstring"""







     SCREAMING_SNAKE_CASE 		=[[0 for _ in range(lowerCAmelCase_     )] for _ in range(m + 1     )]
     for i in range(m + 1     ):
          SCREAMING_SNAKE_CASE 		=1

     for n in range(m + 1     ):
          for k in range(1,       lowerCAmelCase_     ):
               memo[n][k] += memo[n][k - 1]
               if n > k:
                    memo[n][k] += memo[n - k - 1][k]

     return memo[m][m - 1] - 1


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

