




'''simple docstring'''
import argparse

import torch
from flax.training.checkpoints import restore_checkpoint

from transformers import FNetConfig, FNetForPreTraining
from transformers.utils import logging


logging.set_verbosity_info()
def 				snake_case_  (   a__		:	List[str]    ,a__		:	Union[str, Any]    ,a__		:	Optional[Any]			):



    """simple docstring"""




    __lowercase							=						FNetConfig.from_json_file(a__			)
    print(f'Building PyTorch model from configuration: {config}'			)
    __lowercase							=						FNetForPreTraining(a__			)

    __lowercase							=						restore_checkpoint(a__    ,a__			)
    __lowercase							=						checkpoint_dict["""target"""]

    # Embeddings
    # Position IDs
    __lowercase							=						fnet_pretraining_model.state_dict()

    __lowercase							=						state_dict["""fnet.embeddings.position_ids"""]
    __lowercase							=						{"""fnet.embeddings.position_ids""": position_ids}
    # Embedding Layers
    __lowercase							=						torch.tensor(
        pretrained_model_params["""encoder"""]["""embedder"""]["""word"""]["""embedding"""]			)
    __lowercase							=						torch.tensor(
        pretrained_model_params["""encoder"""]["""embedder"""]["""position"""]["""embedding"""][0]			)
    __lowercase							=						torch.tensor(
        pretrained_model_params["""encoder"""]["""embedder"""]["""type"""]["""embedding"""]			)
    __lowercase							=						torch.tensor(
        pretrained_model_params["""encoder"""]["""embedder"""]["""hidden_mapping_in"""]["""kernel"""]			).T
    __lowercase							=						torch.tensor(
        pretrained_model_params["""encoder"""]["""embedder"""]["""hidden_mapping_in"""]["""bias"""]			)
    __lowercase							=						torch.tensor(
        pretrained_model_params["""encoder"""]["""embedder"""]["""layer_norm"""]["""scale"""]			)
    __lowercase							=						torch.tensor(
        pretrained_model_params["""encoder"""]["""embedder"""]["""layer_norm"""]["""bias"""]			)

    # Encoder Layers
    for layer in range(config.num_hidden_layers			):
        __lowercase							=						torch.tensor(
            pretrained_model_params["""encoder"""][f'encoder_{layer}']["""mixing_layer_norm"""]["""scale"""]			)
        __lowercase							=						torch.tensor(
            pretrained_model_params["""encoder"""][f'encoder_{layer}']["""mixing_layer_norm"""]["""bias"""]			)

        __lowercase							=						torch.tensor(
            pretrained_model_params["""encoder"""][f'feed_forward_{layer}']["""intermediate"""]["""kernel"""]			).T
        __lowercase							=						torch.tensor(
            pretrained_model_params["""encoder"""][f'feed_forward_{layer}']["""intermediate"""]["""bias"""]			)

        __lowercase							=						torch.tensor(
            pretrained_model_params["""encoder"""][f'feed_forward_{layer}']["""output"""]["""kernel"""]			).T
        __lowercase							=						torch.tensor(
            pretrained_model_params["""encoder"""][f'feed_forward_{layer}']["""output"""]["""bias"""]			)

        __lowercase							=						torch.tensor(
            pretrained_model_params["""encoder"""][f'encoder_{layer}']["""output_layer_norm"""]["""scale"""]			)
        __lowercase							=						torch.tensor(
            pretrained_model_params["""encoder"""][f'encoder_{layer}']["""output_layer_norm"""]["""bias"""]			)

    # Pooler Layers
    __lowercase							=						torch.tensor(pretrained_model_params["""encoder"""]["""pooler"""]["""kernel"""]			).T
    __lowercase							=						torch.tensor(pretrained_model_params["""encoder"""]["""pooler"""]["""bias"""]			)

    # Masked LM Layers
    __lowercase							=						torch.tensor(
        pretrained_model_params["""predictions_dense"""]["""kernel"""]			).T
    __lowercase							=						torch.tensor(
        pretrained_model_params["""predictions_dense"""]["""bias"""]			)
    __lowercase							=						torch.tensor(
        pretrained_model_params["""predictions_layer_norm"""]["""scale"""]			)
    __lowercase							=						torch.tensor(
        pretrained_model_params["""predictions_layer_norm"""]["""bias"""]			)
    __lowercase							=						torch.tensor(
        pretrained_model_params["""encoder"""]["""embedder"""]["""word"""]["""embedding"""]			)
    __lowercase							=						torch.tensor(
        pretrained_model_params["""predictions_output"""]["""output_bias"""]			)
    __lowercase							=						torch.tensor(pretrained_model_params["""predictions_output"""]["""output_bias"""]			)

    # Seq Relationship Layers
    __lowercase							=						torch.tensor(
        pretrained_model_params["""classification"""]["""output_kernel"""]			)
    __lowercase							=						torch.tensor(
        pretrained_model_params["""classification"""]["""output_bias"""]			)

    # Load State Dict
    fnet_pretraining_model.load_state_dict(a__			)

    # Save PreTrained
    print(f'Saving pretrained model to {save_path}'			)
    fnet_pretraining_model.save_pretrained(a__			)


if __name__ == "__main__":
  A							:      str 	=       argparse.ArgumentParser()
  # Required parameters
  parser.add_argument(
      """--flax_checkpoint_path""", default=None, type=str, required=True, help="""Path to the TensorFlow checkpoint path."""
  )
  parser.add_argument(
      """--fnet_config_file""",
      default=None,
      type=str,
      required=True,
      help=(
          """The config json file corresponding to the pre-trained FNet model. \n"""
          """This specifies the model architecture."""
      ),
  )
  parser.add_argument("""--save_path""", default=None, type=str, required=True, help="""Path to the output model.""")
  A							:      Any 	=       parser.parse_args()
  convert_flax_checkpoint_to_pytorch(args.flax_checkpoint_path, args.fnet_config_file, args.save_path)










'''simple docstring'''
from __future__ import annotations

A							:      List[str] 	=       {1: 1}
def 				snake_case_  (   a__		:	int			):



    """simple docstring"""




    if n in COLLATZ_SEQUENCE_LENGTHS:
        return COLLATZ_SEQUENCE_LENGTHS[n]
    __lowercase							=						n // 2 if n % 2 == 0 else 3 * n + 1
    __lowercase							=						collatz_sequence_length(a__			) + 1
    __lowercase							=						sequence_length
    return sequence_length
def 				snake_case_  (   a__		:	int = 1_00_00_00			):



    """simple docstring"""




    __lowercase							=						max((collatz_sequence_length(a__			), i) for i in range(1    ,a__			)			)
    return result[1]


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




