


from typing import Mapping

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxSeqaSeqConfigWithPast
from ...utils import logging


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


class        __lowerCamelCase      (				lowerCamelCase_ ):


				"""simple docstring"""







				a_:		Optional[int]					      =	"""mt5"""
				a_:		Optional[Any]					      =	["""past_key_values"""]






				def __init__(				self     :    List[str]	,							lowerCamelCase_     :    List[str]=25_0112	,							lowerCamelCase_     :    str=512	,							lowerCamelCase_     :    Tuple=64	,							lowerCamelCase_     :    Any=1024	,							lowerCamelCase_     :    List[Any]=8	,							lowerCamelCase_     :    Any=None	,							lowerCamelCase_     :    Union[str, Any]=6	,							lowerCamelCase_     :    Any=32	,							lowerCamelCase_     :    Dict=128	,							lowerCamelCase_     :    Union[str, Any]=0.1	,							lowerCamelCase_     :    str=1e-6	,							lowerCamelCase_     :    Any=1.0	,							lowerCamelCase_     :    List[str]="gated-gelu"	,							lowerCamelCase_     :    Optional[int]=True	,							lowerCamelCase_     :    str=True	,							lowerCamelCase_     :    List[Any]="T5Tokenizer"	,							lowerCamelCase_     :    Optional[int]=False	,							lowerCamelCase_     :    Optional[Any]=0	,							lowerCamelCase_     :    Optional[int]=1	,							lowerCamelCase_     :    int=0	,							**lowerCamelCase_     :    Dict	,							):
								super().__init__(
								    is_encoder_decoder=lowerCamelCase_	,							tokenizer_class=lowerCamelCase_	,							tie_word_embeddings=lowerCamelCase_	,							pad_token_id=lowerCamelCase_	,							eos_token_id=lowerCamelCase_	,							decoder_start_token_id=lowerCamelCase_	,							**lowerCamelCase_	,							)
								_lowerCAmelCase  						=vocab_size
								_lowerCAmelCase  						=d_model
								_lowerCAmelCase  						=d_kv
								_lowerCAmelCase  						=d_ff
								_lowerCAmelCase  						=num_layers
								_lowerCAmelCase  						=(
								    num_decoder_layers if num_decoder_layers is not None else self.num_layers
								)  # default = symmetry
								_lowerCAmelCase  						=num_heads
								_lowerCAmelCase  						=relative_attention_num_buckets
								_lowerCAmelCase  						=relative_attention_max_distance
								_lowerCAmelCase  						=dropout_rate
								_lowerCAmelCase  						=layer_norm_epsilon
								_lowerCAmelCase  						=initializer_factor
								_lowerCAmelCase  						=feed_forward_proj
								_lowerCAmelCase  						=use_cache

								_lowerCAmelCase  						=self.feed_forward_proj.split("""-"""					)
								_lowerCAmelCase  						=act_info[-1]
								_lowerCAmelCase  						=act_info[0] == """gated"""

								if len(lowerCamelCase_					) > 1 and act_info[0] != "gated" or len(lowerCamelCase_					) > 2:
												raise ValueError(
												    F"`feed_forward_proj`: {feed_forward_proj} is not a valid activation function of the dense layer."
												    """Please make sure `feed_forward_proj` is of the format `gated-{ACT_FN}` or `{ACT_FN}`, e.g. """
												    """'gated-gelu' or 'relu'"""					)

								# for backwards compatibility
								if feed_forward_proj == "gated-gelu":
												_lowerCAmelCase  						="""gelu_new"""






				@property
				def        lowerCAmelCase__			(				self     :    Union[str, Any]					):
								return self.d_model






				@property
				def        lowerCAmelCase__			(				self     :    Any					):
								return self.num_heads






				@property
				def        lowerCAmelCase__			(				self     :    Any					):
								return self.num_layers


class        __lowerCamelCase      (				lowerCamelCase_ ):


				"""simple docstring"""







				@property
				# Copied from transformers.models.t5.configuration_t5.T5OnnxConfig.inputs
				def        lowerCAmelCase__			(				self     :    Dict					):
								_lowerCAmelCase  						={
								    """input_ids""": {0: """batch""", 1: """encoder_sequence"""},
								    """attention_mask""": {0: """batch""", 1: """encoder_sequence"""},
								}
								if self.use_past:
												_lowerCAmelCase  						="""past_encoder_sequence + sequence"""
												_lowerCAmelCase  						={0: """batch"""}
												_lowerCAmelCase  						={0: """batch""", 1: """past_decoder_sequence + sequence"""}
								else:
												_lowerCAmelCase  						={0: """batch""", 1: """decoder_sequence"""}
												_lowerCAmelCase  						={0: """batch""", 1: """decoder_sequence"""}

								if self.use_past:
												self.fill_with_past_key_values_(lowerCamelCase_	,							direction="""inputs"""					)

								return common_inputs






				@property
				# Copied from transformers.models.t5.configuration_t5.T5OnnxConfig.default_onnx_opset
				def        lowerCAmelCase__			(				self     :    Dict					):
								return 13






				@property
				def        lowerCAmelCase__			(				self     :    Optional[int]					):
								return 5e-4





from math import floor, sqrt

def 		snake_case_   (				lowercase__     :    int     ):






				'''simple docstring'''






				_lowerCAmelCase  						=0.0
				_lowerCAmelCase  						=1.0
				_lowerCAmelCase  						=int(sqrt(lowercase__     )     )
				_lowerCAmelCase  						=root
				_lowerCAmelCase  						=0
				while integer_part != 2 * root:
								_lowerCAmelCase  						=denominator * integer_part - numerator
								_lowerCAmelCase  						=(n - numerator**2) / denominator
								_lowerCAmelCase  						=int((root + numerator) / denominator     )
								period += 1
				return period

def 		snake_case_   (				lowercase__     :    int = 1_00_00     ):






				'''simple docstring'''






				_lowerCAmelCase  						=0
				for i in range(2       ,     n + 1     ):
								_lowerCAmelCase  						=sqrt(lowercase__     )
								if sr - floor(lowercase__     ) != 0 and continuous_fraction_period(lowercase__     ) % 2 == 1:
												count_odd_periods += 1
				return count_odd_periods


if __name__ == "__main__":
		print(F'{solution(int(input().strip()))}')

