


import os
from shutil import copyfile
from typing import Optional, Tuple

from ...tokenization_utils_fast import PreTrainedTokenizerFast
from ...utils import is_sentencepiece_available, logging


if is_sentencepiece_available():
       from .tokenization_reformer import ReformerTokenizer
else:
       lowercase_           =	None


lowercase_           =	logging.get_logger(__name__)


lowercase_           =	'▁'

lowercase_           =	{'vocab_file': 'spiece.model', 'tokenizer_file': 'tokenizer.json'}

lowercase_           =	{
    'vocab_file': {
        'google/reformer-crime-and-punishment': (
            'https://huggingface.co/google/reformer-crime-and-punishment/resolve/main/spiece.model'
        )
    },
    'tokenizer_file': {
        'google/reformer-crime-and-punishment': (
            'https://huggingface.co/google/reformer-crime-and-punishment/resolve/main/tokenizer.json'
        )
    },
}

lowercase_           =	{
    'google/reformer-crime-and-punishment': 5_2_4_2_8_8,
}


class        A_					(       __UpperCamelCase    ):




      '''simple docstring'''


      __snake_case					       =   VOCAB_FILES_NAMES
      __snake_case					       =   PRETRAINED_VOCAB_FILES_MAP
      __snake_case					       =   PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
      __snake_case					       =   ["""input_ids""", """attention_mask"""]
      __snake_case					       =   ReformerTokenizer




      def __init__(				self:       Any						,      a:       Union[str, Any]=None						,      a:       List[str]=None						,      a:       List[Any]="</s>"						,      a:       Tuple="<unk>"						,      a:       int=[]						,      **a:       List[Any]						,      ):
       super().__init__(
           a						,      tokenizer_file=a						,      eos_token=a						,      unk_token=a						,      additional_special_tokens=a						,      **a						,      )

       __lowerCamelCase		:							Dict							=						vocab_file
       __lowerCamelCase		:							List[str]							=						False if not self.vocab_file else True




      def      _snake_case	(				self:       Tuple						,      a:       str						,      a:       Optional[str] = None				):
       if not self.can_save_slow_tokenizer:
        raise ValueError(
            'Your fast tokenizer does not have the necessary information to save the vocabulary for a slow '
            'tokenizer.'				)

       if not os.path.isdir(a				):
        logger.error(F'Vocabulary path ({save_directory}) should be a directory'				)
        return
       __lowerCamelCase		:							Any							=						os.path.join(
           a						,      (filename_prefix + '-' if filename_prefix else '') + VOCAB_FILES_NAMES['vocab_file']				)

       if os.path.abspath(self.vocab_file				) != os.path.abspath(a				):
        copyfile(self.vocab_file						,      a				)

       return (out_vocab_file,)





def       UpperCamelCase__     (  SCREAMING_SNAKE_CASE__ = 100						):
 __lowerCamelCase		:							List[Any]							=						[[0 for _ in range(SCREAMING_SNAKE_CASE__						)] for _ in range(m + 1						)]
 for i in range(m + 1						):
  __lowerCamelCase		:							Any							=						1

 for n in range(m + 1						):
  for k in range(1			,       SCREAMING_SNAKE_CASE__						):
   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())))

