

import argparse

import pytorch_lightning as pl
import torch
from torch import nn

from transformers import LongformerForQuestionAnswering, LongformerModel







class 					lowercase							(			pl.LightningModule     ):




				def __init__(   self ,  snake_case			):
											super().__init__()
											snake_case_     							=       model
											snake_case_     							=       2
											snake_case_     							=       nn.Linear(self.model.config.hidden_size ,  self.num_labels			)




				def        a				(   self			):
											pass





def    __lowerCamelCase      (					UpperCamelCase__  ,				UpperCamelCase__  ,				UpperCamelCase__ ):







							'''simple docstring'''






							snake_case_     							=       LongformerModel.from_pretrained(UpperCamelCase__ )
							snake_case_     							=       LightningModel(UpperCamelCase__ )

							snake_case_     							=       torch.load(UpperCamelCase__  ,				map_location=torch.device('cpu' ) )
							lightning_model.load_state_dict(ckpt['state_dict'] )

							# init longformer question answering model
							snake_case_     							=       LongformerForQuestionAnswering.from_pretrained(UpperCamelCase__ )

							# transfer weights
							longformer_for_qa.longformer.load_state_dict(lightning_model.model.state_dict() )
							longformer_for_qa.qa_outputs.load_state_dict(lightning_model.qa_outputs.state_dict() )
							longformer_for_qa.eval()

							# save model
							longformer_for_qa.save_pretrained(UpperCamelCase__ )

							print(F'''Conversion successful. Model saved under {pytorch_dump_folder_path}''' )


if __name__ == "__main__":
					_UpperCAmelCase						:  str									=			argparse.ArgumentParser()
					# Required parameters
					parser.add_argument(
					    """--longformer_model""",
					    default=None,
					    type=str,
					    required=True,
					    help="""model identifier of longformer. Should be either `longformer-base-4096` or `longformer-large-4096`.""",
					)
					parser.add_argument(
					    """--longformer_question_answering_ckpt_path""",
					    default=None,
					    type=str,
					    required=True,
					    help="""Path the official PyTorch Lightning Checkpoint.""",
					)
					parser.add_argument(
					    """--pytorch_dump_folder_path""", default=None, type=str, required=True, help="""Path to the output PyTorch model."""
					)
					_UpperCAmelCase						:  Dict									=			parser.parse_args()
					convert_longformer_qa_checkpoint_to_pytorch(
					    args.longformer_model, args.longformer_question_answering_ckpt_path, args.pytorch_dump_folder_path
					)







def    __lowerCamelCase      (					UpperCamelCase__ = 1000 ):







							'''simple docstring'''






							snake_case_     							=       2**power
							snake_case_     							=       0
							while n:
														snake_case_							,       snake_case_     							=       r + n % 10, n // 10
							return r


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




