"""simple docstring"""






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   a_						(					lowerCamelCase					,			lowerCamelCase       ):
				UpperCAmelCase__             =							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}}'       )
				UpperCAmelCase__             =							DatasetInfosDict.from_directory(lowerCamelCase       )
				assert dataset_infos
				assert dataset_infos["default"].dataset_size == 4_2



@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=4_2					,			),
    ]					,			)
def   a_						(					lowerCamelCase					,			lowerCamelCase       ):
				UpperCAmelCase__             =							str(lowerCamelCase       )
				dataset_info.write_to_directory(lowerCamelCase       )
				UpperCAmelCase__             =							DatasetInfo.from_directory(lowerCamelCase       )
				assert dataset_info == reloaded
				assert os.path.exists(os.path.join(lowerCamelCase					,			'dataset_info.json'       )       )



def   a_						(					):
				UpperCAmelCase__             =							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': 4_2}]					,			download_checksums={}					,			download_size=1_3_3_7					,			post_processing_size=4_4_2					,			dataset_size=1_2_3_4					,			size_in_bytes=1_3_3_7 + 4_4_2 + 1_2_3_4					,			)
				UpperCAmelCase__             =							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)       )
				UpperCAmelCase__             =							yaml.safe_dump(lowerCamelCase       )
				UpperCAmelCase__             =							yaml.safe_load(lowerCamelCase       )
				assert dataset_info_yaml_dict == reloaded



def   a_						(					):
				UpperCAmelCase__             =							DatasetInfo()
				UpperCAmelCase__             =							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=4_2					,			)
            }       ),
        DatasetInfosDict(
            {
                'v1': DatasetInfo(dataset_size=4_2       ),
                'v2': DatasetInfo(dataset_size=1_3_3_7       ),
            }       ),
    ]					,			)
def   a_						(					lowerCamelCase					,			lowerCamelCase       ):
				UpperCAmelCase__             =							str(lowerCamelCase       )
				dataset_infos_dict.write_to_directory(lowerCamelCase       )
				UpperCAmelCase__             =							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():
								UpperCAmelCase__             =							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
								UpperCAmelCase__             =							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'       )       )











"""simple docstring"""



def 						lowercase    (				__snake_case				: int = 1_0_0_0	):
		lowercase_       ,					lowercase_ : str							       =   1, 1
		lowercase_ : List[str]							       =   2
		while True:
				lowercase_ : Tuple							       =   0
				lowercase_ : List[Any]							       =   fa + fa
				lowercase_       ,					lowercase_ : Optional[int]							       =   fa, f
				index += 1
				for _ in str(__snake_case	):
						i += 1
				if i == n:
						break
		return index


if __name__ == "__main__":
						print(solution(int(str(input()).strip())))



