from typing import List, Optional

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


__a  :     Optional[int]       =  logging.get_logger(__name__)

__a  :     int       =  {
    """huggingface/autoformer-tourism-monthly""": """https://huggingface.co/huggingface/autoformer-tourism-monthly/resolve/main/config.json""",
}




class    _UpperCamelCase      (						UpperCAmelCase__ ):


			"""simple docstring"""






			__a  : Dict			 =						'''autoformer'''
			__a  : Tuple			 =						{
			    '''hidden_size''': '''d_model''',
			    '''num_attention_heads''': '''encoder_attention_heads''',
			    '''num_hidden_layers''': '''encoder_layers''',
			}





			def __init__(   self      ,   lowerCAmelCase__ = None      ,   lowerCAmelCase__ = None      ,   lowerCAmelCase__ = "student_t"      ,   lowerCAmelCase__ = "nll"      ,   lowerCAmelCase__ = 1      ,   lowerCAmelCase__ = [1, 2, 3, 4, 5, 6, 7]      ,   lowerCAmelCase__ = True      ,   lowerCAmelCase__ = 0      ,   lowerCAmelCase__ = 0      ,   lowerCAmelCase__ = 0      ,   lowerCAmelCase__ = 0      ,   lowerCAmelCase__ = None      ,   lowerCAmelCase__ = None      ,   lowerCAmelCase__ = 64      ,   lowerCAmelCase__ = 2      ,   lowerCAmelCase__ = 2      ,   lowerCAmelCase__ = 2      ,   lowerCAmelCase__ = 2      ,   lowerCAmelCase__ = 32      ,   lowerCAmelCase__ = 32      ,   lowerCAmelCase__ = "gelu"      ,   lowerCAmelCase__ = 0.1      ,   lowerCAmelCase__ = 0.1      ,   lowerCAmelCase__ = 0.1      ,   lowerCAmelCase__ = 0.1      ,   lowerCAmelCase__ = 0.1      ,   lowerCAmelCase__ = 1_00      ,   lowerCAmelCase__ = 0.02      ,   lowerCAmelCase__ = True      ,   lowerCAmelCase__=True      ,   lowerCAmelCase__ = 10      ,   lowerCAmelCase__ = 25      ,   lowerCAmelCase__ = 3      ,   **lowerCAmelCase__      ,   )     ->					int:

							'''simple docstring'''


							__lowercase 			=							prediction_length
							__lowercase 			=							context_length if context_length is not None else prediction_length
							__lowercase 			=							distribution_output
							__lowercase 			=							loss
							__lowercase 			=							input_size
							__lowercase 			=							num_time_features
							__lowercase 			=							lags_sequence
							__lowercase 			=							scaling
							__lowercase 			=							num_dynamic_real_features
							__lowercase 			=							num_static_real_features
							__lowercase 			=							num_static_categorical_features
							if cardinality is not None and num_static_categorical_features > 0:
											if len(_a						) != num_static_categorical_features:
															raise ValueError(
															    '''The cardinality should be a list of the same length as `num_static_categorical_features`'''						)
											__lowercase 			=							cardinality
							else:
											__lowercase 			=							[0]
							if embedding_dimension is not None and num_static_categorical_features > 0:
											if len(_a						) != num_static_categorical_features:
															raise ValueError(
															    '''The embedding dimension should be a list of the same length as `num_static_categorical_features`'''						)
											__lowercase 			=							embedding_dimension
							else:
											__lowercase 			=							[min(50      ,   (cat + 1) // 2						) for cat in self.cardinality]
							__lowercase 			=							num_parallel_samples

							# Transformer architecture configuration
							__lowercase 			=							input_size * len(self.lags_sequence						) + self._number_of_features
							__lowercase 			=							d_model
							__lowercase 			=							encoder_attention_heads
							__lowercase 			=							decoder_attention_heads
							__lowercase 			=							encoder_ffn_dim
							__lowercase 			=							decoder_ffn_dim
							__lowercase 			=							encoder_layers
							__lowercase 			=							decoder_layers

							__lowercase 			=							dropout
							__lowercase 			=							attention_dropout
							__lowercase 			=							activation_dropout
							__lowercase 			=							encoder_layerdrop
							__lowercase 			=							decoder_layerdrop

							__lowercase 			=							activation_function
							__lowercase 			=							init_std

							__lowercase 			=							use_cache

							# Autoformer
							__lowercase 			=							label_length
							__lowercase 			=							moving_average
							__lowercase 			=							autocorrelation_factor

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





			@property
			def        _SCREAMING_SNAKE_CASE			(   self						)     ->					Tuple:

							'''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
							)





"""simple docstring"""




from collections.abc import Generator



def     a__ (				)						->					Generator[int, None, None]:
			lowerCamelCase      ,   lowerCamelCase			      =					0, 1
			while True:
						lowerCamelCase      ,   lowerCamelCase			      =					b, a + b
						yield b



def     a__ (				snake_case__ = 10_00				)						->					int:
			lowerCamelCase			      =					1
			lowerCamelCase			      =					fibonacci_generator()
			while len(str(next(snake_case__				)				)				) < n:
						answer += 1
			return answer + 1


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



