



import itertools
from dataclasses import dataclass
from typing import Optional

import pandas as pd
import pyarrow as pa

import datasets
from datasets.table import table_cast



@dataclass
class 	lowerCamelCase      (						datasets.BuilderConfig  ):







					'''simple docstring'''







					lowerCAmelCase_				:    Optional[Any]									=  None





class 	lowerCamelCase      (						datasets.ArrowBasedBuilder  ):







					'''simple docstring'''







					lowerCAmelCase_				:    Tuple									=  PandasConfig



					def    A__		(			self     ):
								return datasets.DatasetInfo(features=self.config.features     )



					def    A__		(			self    ,	lowerCAmelCase     ):
								if not self.config.data_files:
											raise ValueError(f'''At least one data file must be specified, but got data_files={self.config.data_files}'''     )
								UpperCAmelCase_						=				dl_manager.download_and_extract(self.config.data_files     )
								if isinstance(UpperCAmelCase__    ,	(str, list, tuple)     ):
											UpperCAmelCase_						=				data_files
											if isinstance(UpperCAmelCase__    ,	UpperCAmelCase__     ):
														UpperCAmelCase_						=				[files]
											# Use `dl_manager.iter_files` to skip hidden files in an extracted archive
											UpperCAmelCase_						=				[dl_manager.iter_files(UpperCAmelCase__     ) for file in files]
											return [datasets.SplitGenerator(name=datasets.Split.TRAIN    ,	gen_kwargs={"files": files}     )]
								UpperCAmelCase_						=				[]
								for split_name, files in data_files.items():
											if isinstance(UpperCAmelCase__    ,	UpperCAmelCase__     ):
														UpperCAmelCase_						=				[files]
											# Use `dl_manager.iter_files` to skip hidden files in an extracted archive
											UpperCAmelCase_						=				[dl_manager.iter_files(UpperCAmelCase__     ) for file in files]
											splits.append(datasets.SplitGenerator(name=UpperCAmelCase__    ,	gen_kwargs={"files": files}     )     )
								return splits



					def    A__		(			self    ,	lowerCAmelCase     ):
								if self.config.features is not None:
											# more expensive cast to support nested features with keys in a different order
											# allows str <-> int/float or str to Audio for example
											UpperCAmelCase_						=				table_cast(UpperCAmelCase__    ,	self.config.features.arrow_schema     )
								return pa_table



					def    A__		(			self    ,	lowerCAmelCase     ):
								for i, file in enumerate(itertools.chain.from_iterable(UpperCAmelCase__     )     ):
											with open(UpperCAmelCase__    ,	"rb"     ) as f:
														UpperCAmelCase_						=				pa.Table.from_pandas(pd.read_pickle(UpperCAmelCase__     )     )
														yield i, self._cast_table(UpperCAmelCase__     )






def snake_case__  (			__SCREAMING_SNAKE_CASE )		->							int:
		UpperCAmelCase_						=				1
		for i in range(1			,     num + 1 ):
				fact *= i
		return fact







def snake_case__  (			__SCREAMING_SNAKE_CASE )		->							int:
		UpperCAmelCase_						=				0
		while number > 0:
				UpperCAmelCase_						=				number % 10
				sum_of_digits += last_digit
				UpperCAmelCase_						=				number // 10  # Removing the last_digit from the given number
		return sum_of_digits







def snake_case__  (			__SCREAMING_SNAKE_CASE = 100 )		->							int:
		UpperCAmelCase_						=				factorial(__SCREAMING_SNAKE_CASE )
		UpperCAmelCase_						=				split_and_add(__SCREAMING_SNAKE_CASE )
		return result


if __name__ == "__main__":
			print(solution(int(input("Enter the Number: ").strip())))

