





import argparse

from tax import checkpoints

from transformers import FlaxTaForConditionalGeneration, TaConfig



def    SCREAMING_SNAKE_CASE							(			snake_case	,      snake_case	,      snake_case       )		->						Optional[Any]:
		__lowercase					=    TaConfig.from_pretrained(snake_case       )
		__lowercase					=    FlaxTaForConditionalGeneration(config=snake_case       )
		__lowercase					=    checkpoints.load_tax_checkpoint(snake_case       )

		__lowercase					=    'wi_0' in tax_model['target']['encoder']['layers_0']['mlp']

		# Encoder
		for layer_index in range(config.num_layers       ):
				__lowercase					=    F"layers_{str(snake_case       )}"

				# Self-Attention
				__lowercase					=    tax_model['target']['encoder'][layer_name]['attention']['key']['kernel']
				__lowercase					=    tax_model['target']['encoder'][layer_name]['attention']['out']['kernel']
				__lowercase					=    tax_model['target']['encoder'][layer_name]['attention']['query']['kernel']
				__lowercase					=    tax_model['target']['encoder'][layer_name]['attention']['value']['kernel']

				# Layer Normalization
				__lowercase					=    tax_model['target']['encoder'][layer_name]['pre_attention_layer_norm']['scale']

				if split_mlp_wi:
						__lowercase					=    tax_model['target']['encoder'][layer_name]['mlp']['wi_0']['kernel']
						__lowercase					=    tax_model['target']['encoder'][layer_name]['mlp']['wi_1']['kernel']
				else:
						__lowercase					=    tax_model['target']['encoder'][layer_name]['mlp']['wi']['kernel']

				__lowercase					=    tax_model['target']['encoder'][layer_name]['mlp']['wo']['kernel']

				# Layer Normalization
				__lowercase					=    tax_model['target']['encoder'][layer_name]['pre_mlp_layer_norm']['scale']

				# Assigning
				__lowercase					=    tax_attention_key
				__lowercase					=    tax_attention_out
				__lowercase					=    tax_attention_query
				__lowercase					=    tax_attention_value

				__lowercase					=    tax_attention_layer_norm

				if split_mlp_wi:
						__lowercase					=    tax_mlp_wi_a
						__lowercase					=    tax_mlp_wi_a
				else:
						__lowercase					=    tax_mlp_wi

				__lowercase					=    tax_mlp_wo
				__lowercase					=    tax_mlp_layer_norm

		# Only for layer 0:
		__lowercase					=    tax_model['target']['encoder']['relpos_bias']['rel_embedding'].T
		__lowercase					=    tax_encoder_rel_embedding

		# Assigning
		__lowercase					=    tax_model['target']['encoder']['encoder_norm']['scale']
		__lowercase					=    tax_encoder_norm

		# Decoder
		for layer_index in range(config.num_decoder_layers       ):
				__lowercase					=    F"layers_{str(snake_case       )}"

				# Self-Attention
				__lowercase					=    tax_model['target']['decoder'][layer_name]['self_attention']['key']['kernel']
				__lowercase					=    tax_model['target']['decoder'][layer_name]['self_attention']['out']['kernel']
				__lowercase					=    tax_model['target']['decoder'][layer_name]['self_attention']['query']['kernel']
				__lowercase					=    tax_model['target']['decoder'][layer_name]['self_attention']['value']['kernel']

				# Layer Normalization
				__lowercase					=    tax_model['target']['decoder'][layer_name]['pre_self_attention_layer_norm'][
				    'scale'
				]

				# Encoder-Decoder-Attention
				__lowercase					=    tax_model['target']['decoder'][layer_name]['encoder_decoder_attention']['key'][
				    'kernel'
				]
				__lowercase					=    tax_model['target']['decoder'][layer_name]['encoder_decoder_attention']['out'][
				    'kernel'
				]
				__lowercase					=    tax_model['target']['decoder'][layer_name]['encoder_decoder_attention']['query'][
				    'kernel'
				]
				__lowercase					=    tax_model['target']['decoder'][layer_name]['encoder_decoder_attention']['value'][
				    'kernel'
				]

				# Layer Normalization
				__lowercase					=    tax_model['target']['decoder'][layer_name]['pre_cross_attention_layer_norm']['scale']

				# MLP
				if split_mlp_wi:
						__lowercase					=    tax_model['target']['decoder'][layer_name]['mlp']['wi_0']['kernel']
						__lowercase					=    tax_model['target']['decoder'][layer_name]['mlp']['wi_1']['kernel']
				else:
						__lowercase					=    tax_model['target']['decoder'][layer_name]['mlp']['wi']['kernel']

				__lowercase					=    tax_model['target']['decoder'][layer_name]['mlp']['wo']['kernel']

				# Layer Normalization
				__lowercase					=    tax_model['target']['decoder'][layer_name]['pre_mlp_layer_norm']['scale']

				# Assigning
				__lowercase					=    tax_attention_key
				__lowercase					=    tax_attention_out
				__lowercase					=    tax_attention_query
				__lowercase					=    tax_attention_value

				__lowercase					=    tax_pre_attention_layer_norm

				__lowercase					=    tax_enc_dec_attention_key
				__lowercase					=    tax_enc_dec_attention_out
				__lowercase					=    tax_enc_dec_attention_query
				__lowercase					=    tax_enc_dec_attention_value

				__lowercase					=    tax_cross_layer_norm

				if split_mlp_wi:
						__lowercase					=    tax_mlp_wi_a
						__lowercase					=    tax_mlp_wi_a
				else:
						__lowercase					=    tax_mlp_wi

				__lowercase					=    tax_mlp_wo

				__lowercase					=    txa_mlp_layer_norm

		# Decoder Normalization
		__lowercase					=    tax_model['target']['decoder']['decoder_norm']['scale']
		__lowercase					=    txa_decoder_norm

		# Only for layer 0:
		__lowercase					=    tax_model['target']['decoder']['relpos_bias']['rel_embedding'].T
		__lowercase					=    tax_decoder_rel_embedding

		# Token Embeddings
		__lowercase					=    tax_model['target']['token_embedder']['embedding']
		__lowercase					=    txa_token_embeddings

		# LM Head (only in v1.1 checkpoints)
		if "logits_dense" in tax_model["target"]["decoder"]:
				__lowercase					=    tax_model['target']['decoder']['logits_dense']['kernel']

		flax_model.save_pretrained(snake_case       )
		print('T5X Model was sucessfully converted!'       )


if __name__ == "__main__":
				SCREAMING_SNAKE_CASE_      :			Tuple		  =      argparse.ArgumentParser()
				# Required parameters
				parser.add_argument(
				    '''--t5x_checkpoint_path''', default=None, type=str, required=True, help='''Path the TX5 checkpoint.'''
				)
				parser.add_argument('''--config_name''', default=None, type=str, required=True, help='''Config name of T5 model.''')
				parser.add_argument(
				    '''--flax_dump_folder_path''', default=None, type=str, required=True, help='''Path to the output FLAX model.'''
				)
				SCREAMING_SNAKE_CASE_      :			Optional[Any]		  =      parser.parse_args()
				convert_tax_checkpoint_to_flax(args.tax_checkpoint_path, args.config_name, args.flax_dump_folder_path)











from math import floor, sqrt



def    SCREAMING_SNAKE_CASE							(			snake_case       )		->						int:
		__lowercase					=    0.0
		__lowercase					=    1.0
		__lowercase					=    int(sqrt(snake_case       )       )
		__lowercase					=    root
		__lowercase					=    0
		while integer_part != 2 * root:
				__lowercase					=    denominator * integer_part - numerator
				__lowercase					=    (n - numerator**2) / denominator
				__lowercase					=    int((root + numerator) / denominator       )
				period += 1
		return period



def    SCREAMING_SNAKE_CASE							(			snake_case = 10_000       )		->						int:
		__lowercase					=    0
		for i in range(2	,      n + 1       ):
				__lowercase					=    sqrt(snake_case       )
				if sr - floor(snake_case       ) != 0 and continuous_fraction_period(snake_case       ) % 2 == 1:
						count_odd_periods += 1
		return count_odd_periods


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




