



from typing import List, Optional, Union

from ...configuration_utils import PretrainedConfig
from ...utils import logging


a__    =	logging.get_logger(__name__)

a__    =	{
    """huggingface/informer-tourism-monthly""": (
        """https://huggingface.co/huggingface/informer-tourism-monthly/resolve/main/config.json"""
    ),
    # See all Informer models at https://huggingface.co/models?filter=informer
}







class 		snake_case						(	SCREAMING_SNAKE_CASE_  ):



   '''simple docstring'''






   snake_case_					: Optional[int]          =		"""informer"""
   snake_case_					: int          =		{
       """hidden_size""": """d_model""",
       """num_attention_heads""": """encoder_attention_heads""",
       """num_hidden_layers""": """encoder_layers""",
   }

   def __init__(					self							:			Any				,		lowerCAmelCase							:			Optional[int] = None				,		lowerCAmelCase							:			Optional[int] = None				,		lowerCAmelCase							:			str = "student_t"				,		lowerCAmelCase							:			str = "nll"				,		lowerCAmelCase							:			int = 1				,		lowerCAmelCase							:			List[int] = None				,		lowerCAmelCase							:			Optional[Union[str, bool]] = "mean"				,		lowerCAmelCase							:			int = 0				,		lowerCAmelCase							:			int = 0				,		lowerCAmelCase							:			int = 0				,		lowerCAmelCase							:			int = 0				,		lowerCAmelCase							:			Optional[List[int]] = None				,		lowerCAmelCase							:			Optional[List[int]] = None				,		lowerCAmelCase							:			int = 64				,		lowerCAmelCase							:			int = 32				,		lowerCAmelCase							:			int = 32				,		lowerCAmelCase							:			int = 2				,		lowerCAmelCase							:			int = 2				,		lowerCAmelCase							:			int = 2				,		lowerCAmelCase							:			int = 2				,		lowerCAmelCase							:			bool = True				,		lowerCAmelCase							:			str = "gelu"				,		lowerCAmelCase							:			float = 0.05				,		lowerCAmelCase							:			float = 0.1				,		lowerCAmelCase							:			float = 0.1				,		lowerCAmelCase							:			float = 0.1				,		lowerCAmelCase							:			float = 0.1				,		lowerCAmelCase							:			int = 100				,		lowerCAmelCase							:			float = 0.02				,		lowerCAmelCase							:			List[Any]=True				,		lowerCAmelCase							:			str = "prob"				,		lowerCAmelCase							:			int = 5				,		lowerCAmelCase							:			bool = True				,		**lowerCAmelCase							:			List[str]				,		)				->				Dict:

    """simple docstring"""







    _snake_case    :  List[str]					=					prediction_length
    _snake_case    :  int					=					context_length or prediction_length
    _snake_case    :  Optional[int]					=					distribution_output
    _snake_case    :  Tuple					=					loss
    _snake_case    :  Union[str, Any]					=					input_size
    _snake_case    :  List[Any]					=					num_time_features
    _snake_case    :  List[Any]					=					lags_sequence if lags_sequence is not None else [1, 2, 3, 4, 5, 6, 7]
    _snake_case    :  Dict					=					scaling
    _snake_case    :  str					=					num_dynamic_real_features
    _snake_case    :  Optional[Any]					=					num_static_real_features
    _snake_case    :  int					=					num_static_categorical_features

    # set cardinality
    if cardinality and num_static_categorical_features > 0:
     if len(lowerCAmelCase) != num_static_categorical_features:
      raise ValueError(
          """The cardinality should be a list of the same length as `num_static_categorical_features`""")
     _snake_case    :  Optional[Any]					=					cardinality
    else:
     _snake_case    :  int					=					[0]

    # set embedding_dimension
    if embedding_dimension and num_static_categorical_features > 0:
     if len(lowerCAmelCase) != num_static_categorical_features:
      raise ValueError(
          """The embedding dimension should be a list of the same length as `num_static_categorical_features`""")
     _snake_case    :  Optional[Any]					=					embedding_dimension
    else:
     _snake_case    :  Any					=					[min(50				,		(cat + 1) // 2) for cat in self.cardinality]

    _snake_case    :  Any					=					num_parallel_samples

    # Transformer architecture configuration
    _snake_case    :  str					=					input_size * len(self.lags_sequence) + self._number_of_features
    _snake_case    :  List[str]					=					d_model
    _snake_case    :  Union[str, Any]					=					encoder_attention_heads
    _snake_case    :  Dict					=					decoder_attention_heads
    _snake_case    :  str					=					encoder_ffn_dim
    _snake_case    :  Union[str, Any]					=					decoder_ffn_dim
    _snake_case    :  List[str]					=					encoder_layers
    _snake_case    :  Dict					=					decoder_layers

    _snake_case    :  Optional[Any]					=					dropout
    _snake_case    :  Tuple					=					attention_dropout
    _snake_case    :  Union[str, Any]					=					activation_dropout
    _snake_case    :  str					=					encoder_layerdrop
    _snake_case    :  Tuple					=					decoder_layerdrop

    _snake_case    :  Dict					=					activation_function
    _snake_case    :  Union[str, Any]					=					init_std

    _snake_case    :  Optional[Any]					=					use_cache

    # Informer
    _snake_case    :  Optional[Any]					=					attention_type
    _snake_case    :  Tuple					=					sampling_factor
    _snake_case    :  Optional[int]					=					distil

    super().__init__(is_encoder_decoder=lowerCAmelCase				,		**lowerCAmelCase)


   @property
   def      UpperCamelCase_  (					self							:			Dict)				->				int:

    """simple docstring"""







    return (
        sum(self.embedding_dimension)
        + self.num_dynamic_real_features
        + self.num_time_features
        + self.num_static_real_features
        + self.input_size * 2  # the log1p(abs(loc)) and log(scale) features
    )





import sys

a__    =	(
    """73167176531330624919225119674426574742355349194934"""
    """96983520312774506326239578318016984801869478851843"""
    """85861560789112949495459501737958331952853208805511"""
    """12540698747158523863050715693290963295227443043557"""
    """66896648950445244523161731856403098711121722383113"""
    """62229893423380308135336276614282806444486645238749"""
    """30358907296290491560440772390713810515859307960866"""
    """70172427121883998797908792274921901699720888093776"""
    """65727333001053367881220235421809751254540594752243"""
    """52584907711670556013604839586446706324415722155397"""
    """53697817977846174064955149290862569321978468622482"""
    """83972241375657056057490261407972968652414535100474"""
    """82166370484403199890008895243450658541227588666881"""
    """16427171479924442928230863465674813919123162824586"""
    """17866458359124566529476545682848912883142607690042"""
    """24219022671055626321111109370544217506941658960408"""
    """07198403850962455444362981230987879927244284909188"""
    """84580156166097919133875499200524063689912560717606"""
    """05886116467109405077541002256983155200055935729725"""
    """71636269561882670428252483600823257530420752963450"""
)



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


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