



"""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        _UpperCAmelCase       (			datasets.BuilderConfig):
 _lowerCAmelCase   :			Optional[datasets.Features]							=		None





class        _UpperCAmelCase       (			datasets.ArrowBasedBuilder):
 _lowerCAmelCase   :			List[str]							=		PandasConfig

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

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

 def 						_snake_case					(     self		:       int  ,     lowercase_		:       pa.Table				):
     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
         snake_case_ :     str				=	table_cast(lowercase_  ,     self.config.features.arrow_schema				)
     return pa_table






 def 						_snake_case					(     self		:       Optional[int]  ,     lowercase_		:       List[str]				):
     for i, file in enumerate(itertools.chain.from_iterable(lowercase_				)				):
         with open(lowercase_  ,     '''rb'''				) as f:
             snake_case_ :     List[str]				=	pa.Table.from_pandas(pd.read_pickle(lowercase_				)				)
             yield i, self._cast_table(lowercase_				)










"""simple docstring"""

import sys

lowercase__    :  Dict							    =	(
    '''73167176531330624919225119674426574742355349194934'''
    '''96983520312774506326239578318016984801869478851843'''
    '''85861560789112949495459501737958331952853208805511'''
    '''12540698747158523863050715693290963295227443043557'''
    '''66896648950445244523161731856403098711121722383113'''
    '''62229893423380308135336276614282806444486645238749'''
    '''30358907296290491560440772390713810515859307960866'''
    '''70172427121883998797908792274921901699720888093776'''
    '''65727333001053367881220235421809751254540594752243'''
    '''52584907711670556013604839586446706324415722155397'''
    '''53697817977846174064955149290862569321978468622482'''
    '''83972241375657056057490261407972968652414535100474'''
    '''82166370484403199890008895243450658541227588666881'''
    '''16427171479924442928230863465674813919123162824586'''
    '''17866458359124566529476545682848912883142607690042'''
    '''24219022671055626321111109370544217506941658960408'''
    '''07198403850962455444362981230987879927244284909188'''
    '''84580156166097919133875499200524063689912560717606'''
    '''05886116467109405077541002256983155200055935729725'''
    '''71636269561882670428252483600823257530420752963450'''
)




def __lowercase			(							_a    ):
    snake_case_ :     List[Any]				=	1
    for digit in s:
        product *= int(_a    )
    return product




def __lowercase			(							_a = N    ):
    snake_case_ :     Optional[int]				=	-sys.maxsize - 1
    snake_case_ :     str				=	n[:13]
    snake_case_ :     List[Any]				=	13
    while cur_index < len(_a    ) - 13:
        if int(n[cur_index]    ) >= int(substr[0]    ):
            snake_case_ :     int				=	substr[1:] + n[cur_index]
            cur_index += 1
        else:
            snake_case_ :     Optional[Any]				=	max(_a		,			str_eval(_a    )    )
            snake_case_ :     Any				=	n[cur_index : cur_index + 13]
            cur_index += 13
    return largest_product


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





