
import sys

UpperCAmelCase__   :					Union[str, Any]												=				(
    '73167176531330624919225119674426574742355349194934'
    '96983520312774506326239578318016984801869478851843'
    '85861560789112949495459501737958331952853208805511'
    '12540698747158523863050715693290963295227443043557'
    '66896648950445244523161731856403098711121722383113'
    '62229893423380308135336276614282806444486645238749'
    '30358907296290491560440772390713810515859307960866'
    '70172427121883998797908792274921901699720888093776'
    '65727333001053367881220235421809751254540594752243'
    '52584907711670556013604839586446706324415722155397'
    '53697817977846174064955149290862569321978468622482'
    '83972241375657056057490261407972968652414535100474'
    '82166370484403199890008895243450658541227588666881'
    '16427171479924442928230863465674813919123162824586'
    '17866458359124566529476545682848912883142607690042'
    '24219022671055626321111109370544217506941658960408'
    '07198403850962455444362981230987879927244284909188'
    '84580156166097919133875499200524063689912560717606'
    '05886116467109405077541002256983155200055935729725'
    '71636269561882670428252483600823257530420752963450'
)

def lowercase_						(     _snake_case = N		):
							SCREAMING_SNAKE_CASE__		: Optional[int]     =     -sys.maxsize - 1
							for i in range(len(snake_case_		) - 12		):
														SCREAMING_SNAKE_CASE__		: List[str]     =     1
														for j in range(13		):
																					product *= int(n[i + j]		)
														if product > largest_product:
																					SCREAMING_SNAKE_CASE__		: Tuple     =     product
							return largest_product


if __name__ == "__main__":
					print(f"""{solution() = }""")






"""simple docstring"""




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"""



				__UpperCamelCase   :		Optional[datasets.Features]       =     None






class 			lowerCAmelCase_		(datasets.ArrowBasedBuilder						):


				"""simple docstring"""



				__UpperCamelCase   :		Union[str, Any]       =     PandasConfig



				def 			__magic_name__					(self					)      ->	List[str]:



											"""simple docstring"""




											return datasets.DatasetInfo(features=self.config.features					)



				def 			__magic_name__					(self     , SCREAMING_SNAKE_CASE__					)      ->	Optional[int]:



											"""simple docstring"""




											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}'''					)
											SCREAMING_SNAKE_CASE__		: Optional[Any]     =     dl_manager.download_and_extract(self.config.data_files					)
											if isinstance(SCREAMING_SNAKE_CASE__     , (str, list, tuple)					):
																		SCREAMING_SNAKE_CASE__		: Tuple     =     data_files
																		if isinstance(SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__					):
																									SCREAMING_SNAKE_CASE__		: Optional[Any]     =     [files]
																		# Use `dl_manager.iter_files` to skip hidden files in an extracted archive
																		SCREAMING_SNAKE_CASE__		: str     =     [dl_manager.iter_files(SCREAMING_SNAKE_CASE__					) for file in files]
																		return [datasets.SplitGenerator(name=datasets.Split.TRAIN     , gen_kwargs={"""files""": files}					)]
											SCREAMING_SNAKE_CASE__		: int     =     []
											for split_name, files in data_files.items():
																		if isinstance(SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__					):
																									SCREAMING_SNAKE_CASE__		: List[str]     =     [files]
																		# Use `dl_manager.iter_files` to skip hidden files in an extracted archive
																		SCREAMING_SNAKE_CASE__		: Dict     =     [dl_manager.iter_files(SCREAMING_SNAKE_CASE__					) for file in files]
																		splits.append(datasets.SplitGenerator(name=SCREAMING_SNAKE_CASE__     , gen_kwargs={"""files""": files}					)					)
											return splits



				def 			__magic_name__					(self     , SCREAMING_SNAKE_CASE__					)      ->	pa.Table:



											"""simple docstring"""




											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
																		SCREAMING_SNAKE_CASE__		: Tuple     =     table_cast(SCREAMING_SNAKE_CASE__     , self.config.features.arrow_schema					)
											return pa_table



				def 			__magic_name__					(self     , SCREAMING_SNAKE_CASE__					)      ->	Optional[Any]:



											"""simple docstring"""




											for i, file in enumerate(itertools.chain.from_iterable(SCREAMING_SNAKE_CASE__					)					):
																		with open(SCREAMING_SNAKE_CASE__     , """rb"""					) as f:
																									SCREAMING_SNAKE_CASE__		: List[str]     =     pa.Table.from_pandas(pd.read_pickle(SCREAMING_SNAKE_CASE__					)					)
																									yield i, self._cast_table(SCREAMING_SNAKE_CASE__					)




