import os
import unittest

from transformers.models.bertweet.tokenization_bertweet import VOCAB_FILES_NAMES, BertweetTokenizer

from ...test_tokenization_common import TokenizerTesterMixin







class 			SCREAMING_SNAKE_CASE__ (   __UpperCamelCase					,				unittest.TestCase  ):
       A				:     List[Any]					    =     BertweetTokenizer
       A				:     str					    =     False

       def        snake_case__  (				self :			Tuple       ):
           super().setUp()

           # Adapted from Sennrich et al. 2015 and https://github.com/rsennrich/subword-nmt
           __snake_case    :							List[Any]             =  ['I', 'm', 'V@@', 'R@@', 'r', 'e@@']
           __snake_case    :							Any             =  dict(zip(_lowerCAmelCase       ,       range(len(_lowerCAmelCase       )       )       )       )
           __snake_case    :							List[Any]             =  ['#version: 0.2', 'a m</w>']
           __snake_case    :							Any             =  {'unk_token': '<unk>'}

           __snake_case    :							List[str]             =  os.path.join(self.tmpdirname       ,       VOCAB_FILES_NAMES["""vocab_file"""]       )
           __snake_case    :							List[str]             =  os.path.join(self.tmpdirname       ,       VOCAB_FILES_NAMES["""merges_file"""]       )
           with open(self.vocab_file       ,       """w"""       ,       encoding="""utf-8"""       ) as fp:
               for token in vocab_tokens:
                   fp.write(f'''{token} {vocab_tokens[token]}\n'''       )
           with open(self.merges_file       ,       """w"""       ,       encoding="""utf-8"""       ) as fp:
               fp.write("""\n""".join(_lowerCAmelCase       )       )

       def        snake_case__  (				self :			Tuple       ,       **_lowerCAmelCase :			Dict       ):
           kwargs.update(self.special_tokens_map       )
           return BertweetTokenizer.from_pretrained(self.tmpdirname       ,       **_lowerCAmelCase       )

       def        snake_case__  (				self :			int       ,       _lowerCAmelCase :			str       ):
           __snake_case    :							List[Any]             =  'I am VinAI Research'
           __snake_case    :							Optional[Any]             =  'I <unk> m V<unk> <unk> <unk> I Re<unk> e<unk> <unk> <unk> <unk>'
           return input_text, output_text





       def        snake_case__  (				self :			Any       ):
           __snake_case    :							Union[str, Any]             =  BertweetTokenizer(self.vocab_file       ,       self.merges_file       ,       **self.special_tokens_map       )
           __snake_case    :							Optional[int]             =  'I am VinAI Research'
           __snake_case    :							int             =  'I a@@ m V@@ i@@ n@@ A@@ I R@@ e@@ s@@ e@@ a@@ r@@ c@@ h'.split()
           __snake_case    :							List[Any]             =  tokenizer.tokenize(_lowerCAmelCase       )
           self.assertListEqual(_lowerCAmelCase       ,       _lowerCAmelCase       )

           __snake_case    :							Dict             =  tokens + [tokenizer.unk_token]

           __snake_case    :							Dict             =  [4, 3, 5, 6, 3, 3, 3, 4, 7, 9, 3, 9, 3, 3, 3, 3, 3]
           self.assertListEqual(tokenizer.convert_tokens_to_ids(_lowerCAmelCase       )       ,       _lowerCAmelCase       )







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())))

