





'''simple docstring'''




import os
import sys
import unittest


lowercase__    :      Tuple						=    os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
sys.path.append(os.path.join(git_repo_path, '''utils'''))

import get_test_info  # noqa: E402
from get_test_info import (  # noqa: E402
    get_model_to_test_mapping,
    get_model_to_tester_mapping,
    get_test_to_tester_mapping,
)


lowercase__    :      Optional[Any]						=    os.path.join('''tests''', '''models''', '''bert''', '''test_modeling_bert.py''')
lowercase__    :      Union[str, Any]						=    os.path.join('''tests''', '''models''', '''blip''', '''test_modeling_blip.py''')


class  SCREAMING_SNAKE_CASE    (unittest.TestCase							):


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Any      =       get_test_to_tester_mapping(__SCREAMING_SNAKE_CASE)
          __A						: Any      =       get_test_to_tester_mapping(__SCREAMING_SNAKE_CASE)

          __A						: List[str]      =       {'BertModelTest': 'BertModelTester'}

          __A						: int      =       {
              'BlipModelTest': 'BlipModelTester',
              'BlipTextImageModelTest': 'BlipTextImageModelsModelTester',
              'BlipTextModelTest': 'BlipTextModelTester',
              'BlipTextRetrievalModelTest': 'BlipTextRetrievalModelTester',
              'BlipVQAModelTest': 'BlipVQAModelTester',
              'BlipVisionModelTest': 'BlipVisionModelTester',
          }

          self.assertEqual(get_test_info.to_json(__SCREAMING_SNAKE_CASE)						,	__SCREAMING_SNAKE_CASE)
          self.assertEqual(get_test_info.to_json(__SCREAMING_SNAKE_CASE)						,	__SCREAMING_SNAKE_CASE)


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Union[str, Any]      =       get_model_to_test_mapping(__SCREAMING_SNAKE_CASE)
          __A						: str      =       get_model_to_test_mapping(__SCREAMING_SNAKE_CASE)

          __A						: Dict      =       {
              'BertForMaskedLM': ['BertModelTest'],
              'BertForMultipleChoice': ['BertModelTest'],
              'BertForNextSentencePrediction': ['BertModelTest'],
              'BertForPreTraining': ['BertModelTest'],
              'BertForQuestionAnswering': ['BertModelTest'],
              'BertForSequenceClassification': ['BertModelTest'],
              'BertForTokenClassification': ['BertModelTest'],
              'BertLMHeadModel': ['BertModelTest'],
              'BertModel': ['BertModelTest'],
          }

          __A						: Optional[int]      =       {
              'BlipForConditionalGeneration': ['BlipTextImageModelTest'],
              'BlipForImageTextRetrieval': ['BlipTextRetrievalModelTest'],
              'BlipForQuestionAnswering': ['BlipVQAModelTest'],
              'BlipModel': ['BlipModelTest'],
              'BlipTextModel': ['BlipTextModelTest'],
              'BlipVisionModel': ['BlipVisionModelTest'],
          }

          self.assertEqual(get_test_info.to_json(__SCREAMING_SNAKE_CASE)						,	__SCREAMING_SNAKE_CASE)
          self.assertEqual(get_test_info.to_json(__SCREAMING_SNAKE_CASE)						,	__SCREAMING_SNAKE_CASE)


     def 							SCREAMING_SNAKE_CASE  (						self):

          '''simple docstring'''






          __A						: Optional[Any]      =       get_model_to_tester_mapping(__SCREAMING_SNAKE_CASE)
          __A						: Any      =       get_model_to_tester_mapping(__SCREAMING_SNAKE_CASE)

          __A						: Any      =       {
              'BertForMaskedLM': ['BertModelTester'],
              'BertForMultipleChoice': ['BertModelTester'],
              'BertForNextSentencePrediction': ['BertModelTester'],
              'BertForPreTraining': ['BertModelTester'],
              'BertForQuestionAnswering': ['BertModelTester'],
              'BertForSequenceClassification': ['BertModelTester'],
              'BertForTokenClassification': ['BertModelTester'],
              'BertLMHeadModel': ['BertModelTester'],
              'BertModel': ['BertModelTester'],
          }

          __A						: int      =       {
              'BlipForConditionalGeneration': ['BlipTextImageModelsModelTester'],
              'BlipForImageTextRetrieval': ['BlipTextRetrievalModelTester'],
              'BlipForQuestionAnswering': ['BlipVQAModelTester'],
              'BlipModel': ['BlipModelTester'],
              'BlipTextModel': ['BlipTextModelTester'],
              'BlipVisionModel': ['BlipVisionModelTester'],
          }

          self.assertEqual(get_test_info.to_json(__SCREAMING_SNAKE_CASE)						,	__SCREAMING_SNAKE_CASE)
          self.assertEqual(get_test_info.to_json(__SCREAMING_SNAKE_CASE)						,	__SCREAMING_SNAKE_CASE)







"""simple docstring"""





def      lowerCamelCase__       (							_lowerCamelCase       :		int		,				_lowerCamelCase       :		int )      ->				int:
  lowerCamelCase_         =						1  # To kept the Calculated Value
  # Since C(n, k) = C(n, n-k)
  if k > (n - k):
    lowerCamelCase_         =						n - k
  # Calculate C(n,k)
  for i in range(_lowerCamelCase ):
    result *= n - i
    result //= i + 1
  return result







def      lowerCamelCase__       (							_lowerCamelCase       :		int )      ->				int:
  return binomial_coefficient(2 * node_count		,				_lowerCamelCase ) // (node_count + 1)







def      lowerCamelCase__       (							_lowerCamelCase       :		int )      ->				int:
  if n < 0:
    raise ValueError('factorial() not defined for negative values' )
  lowerCamelCase_         =						1
  for i in range(1		,				n + 1 ):
    result *= i
  return result







def      lowerCamelCase__       (							_lowerCamelCase       :		int )      ->				int:
  return catalan_number(_lowerCamelCase ) * factorial(_lowerCamelCase )


if __name__ == "__main__":
  _SCREAMING_SNAKE_CASE					:				int					    =						int(input('''Enter the number of nodes: ''').strip() or 0)
  if node_count <= 0:
    raise ValueError('''We need some nodes to work with.''')
  print(
      F'''Given {node_count} nodes, there are {binary_tree_count(node_count)} '''
      F'''binary trees and {catalan_number(node_count)} binary search trees.'''
  )




