




from math import factorial





def        __UpperCAmelCase						(							lowerCamelCase_ :     int = 20  )       ->  int:







			"""simple docstring"""





			SCREAMING_SNAKE_CASE_   : List[str]					  =      2 * n  # middle entry of odd rows starting at row 3 is the solution for n = 1,
			# 2, 3,...
			SCREAMING_SNAKE_CASE_   : List[Any]					  =      n // 2

			return int(factorial(lowerCamelCase_  ) / (factorial(lowerCamelCase_  ) * factorial(n - k  ))  )


if __name__ == "__main__":
						import sys

						if len(sys.argv) == 1:
												print(solution(20))
						else:
												try:
																		UpperCamelCase__ :   Optional[Any]						=							int(sys.argv[1])
																		print(solution(n))
												except ValueError:
																		print('''Invalid entry - please enter a number.''')









import os

import pytest
import yaml

from datasets.features.features import Features, Value
from datasets.info import DatasetInfo, DatasetInfosDict





@pytest.mark.parametrize(
    'files'  ,							[
        ['full:README.md', 'dataset_infos.json'],
        ['empty:README.md', 'dataset_infos.json'],
        ['dataset_infos.json'],
        ['full:README.md'],
    ]  ,							)
def        __UpperCAmelCase						(							lowerCamelCase_ :     int  ,							lowerCamelCase_ :     int  )       ->  int:







			"""simple docstring"""





			SCREAMING_SNAKE_CASE_   : Optional[int]					  =      tmp_path_factory.mktemp('dset_infos_dir'  )
			if "full:README.md" in files:
						with open(dataset_infos_dir / 'README.md'  ,							'w'  ) as f:
									f.write('---\ndataset_info:\n  dataset_size: 42\n---'  )
			if "empty:README.md" in files:
						with open(dataset_infos_dir / 'README.md'  ,							'w'  ) as f:
									f.write(''  )
    # we want to support dataset_infos.json for backward compatibility
			if "dataset_infos.json" in files:
						with open(dataset_infos_dir / 'dataset_infos.json'  ,							'w'  ) as f:
									f.write('{"default": {"dataset_size": 42}}'  )
			SCREAMING_SNAKE_CASE_   : List[Any]					  =      DatasetInfosDict.from_directory(lowerCamelCase_  )
			assert dataset_infos
			assert dataset_infos["default"].dataset_size == 42





@pytest.mark.parametrize(
    'dataset_info'  ,							[
        DatasetInfo(),
        DatasetInfo(
            description='foo'  ,							features=Features({'a': Value('int32'  )}  )  ,							builder_name='builder'  ,							config_name='config'  ,							version='1.0.0'  ,							splits=[{'name': 'train'}]  ,							download_size=42  ,							),
    ]  ,							)
def        __UpperCAmelCase						(							lowerCamelCase_ :     int  ,							lowerCamelCase_ :     DatasetInfo  )       ->  Any:







			"""simple docstring"""





			SCREAMING_SNAKE_CASE_   : Dict					  =      str(lowerCamelCase_  )
			dataset_info.write_to_directory(lowerCamelCase_  )
			SCREAMING_SNAKE_CASE_   : List[str]					  =      DatasetInfo.from_directory(lowerCamelCase_  )
			assert dataset_info == reloaded
			assert os.path.exists(os.path.join(lowerCamelCase_  ,							'dataset_info.json'  )  )





def        __UpperCAmelCase						(							)       ->  List[Any]:







			"""simple docstring"""





			SCREAMING_SNAKE_CASE_   : str					  =      DatasetInfo(
			    description='foo'  ,							citation='bar'  ,							homepage='https://foo.bar'  ,							license='CC0'  ,							features=Features({'a': Value('int32'  )}  )  ,							post_processed={}  ,							supervised_keys=()  ,							task_templates=[]  ,							builder_name='builder'  ,							config_name='config'  ,							version='1.0.0'  ,							splits=[{'name': 'train', 'num_examples': 42}]  ,							download_checksums={}  ,							download_size=13_37  ,							post_processing_size=4_42  ,							dataset_size=12_34  ,							size_in_bytes=13_37 + 4_42 + 12_34  ,							)
			SCREAMING_SNAKE_CASE_   : Optional[int]					  =      dataset_info._to_yaml_dict()
			assert sorted(lowerCamelCase_  ) == sorted(DatasetInfo._INCLUDED_INFO_IN_YAML  )
			for key in DatasetInfo._INCLUDED_INFO_IN_YAML:
						assert key in dataset_info_yaml_dict
						assert isinstance(dataset_info_yaml_dict[key]  ,							(list, dict, int, str)  )
			SCREAMING_SNAKE_CASE_   : Optional[int]					  =      yaml.safe_dump(lowerCamelCase_  )
			SCREAMING_SNAKE_CASE_   : int					  =      yaml.safe_load(lowerCamelCase_  )
			assert dataset_info_yaml_dict == reloaded





def        __UpperCAmelCase						(							)       ->  Dict:







			"""simple docstring"""





			SCREAMING_SNAKE_CASE_   : Union[str, Any]					  =      DatasetInfo()
			SCREAMING_SNAKE_CASE_   : Optional[Any]					  =      dataset_info._to_yaml_dict()
			assert dataset_info_yaml_dict == {}





@pytest.mark.parametrize(
    'dataset_infos_dict'  ,							[
        DatasetInfosDict(),
        DatasetInfosDict({'default': DatasetInfo()}  ),
        DatasetInfosDict({'my_config_name': DatasetInfo()}  ),
        DatasetInfosDict(
            {
                'default': DatasetInfo(
                    description='foo'  ,							features=Features({'a': Value('int32'  )}  )  ,							builder_name='builder'  ,							config_name='config'  ,							version='1.0.0'  ,							splits=[{'name': 'train'}]  ,							download_size=42  ,							)
            }  ),
        DatasetInfosDict(
            {
                'v1': DatasetInfo(dataset_size=42  ),
                'v2': DatasetInfo(dataset_size=13_37  ),
            }  ),
    ]  ,							)
def        __UpperCAmelCase						(							lowerCamelCase_ :     Optional[Any]  ,							lowerCamelCase_ :     DatasetInfosDict  )       ->  Tuple:







			"""simple docstring"""





			SCREAMING_SNAKE_CASE_   : Any					  =      str(lowerCamelCase_  )
			dataset_infos_dict.write_to_directory(lowerCamelCase_  )
			SCREAMING_SNAKE_CASE_   : List[Any]					  =      DatasetInfosDict.from_directory(lowerCamelCase_  )

			# the config_name of the dataset_infos_dict take over the attribute
			for config_name, dataset_info in dataset_infos_dict.items():
						SCREAMING_SNAKE_CASE_   : Any					  =      config_name
						# the yaml representation doesn't include fields like description or citation
						# so we just test that we can recover what we can from the yaml
						SCREAMING_SNAKE_CASE_   : Any					  =      DatasetInfo._from_yaml_dict(dataset_info._to_yaml_dict()  )
			assert dataset_infos_dict == reloaded

			if dataset_infos_dict:
						assert os.path.exists(os.path.join(lowerCamelCase_  ,							'README.md'  )  )



