import argparse

import torch

from transformers import FunnelBaseModel, FunnelConfig, FunnelModel, load_tf_weights_in_funnel
from transformers.utils import logging


logging.set_verbosity_info()






def _lowerCamelCase  (		snake_case     , snake_case     , snake_case     , snake_case  ):
							# Initialise PyTorch model
							_lowerCAmelCase							=							FunnelConfig.from_json_file(snake_case  )
							print(F'Building PyTorch model from configuration: {config}'  )
							_lowerCAmelCase							=							FunnelBaseModel(snake_case  ) if base_model else FunnelModel(snake_case  )

							# Load weights from tf checkpoint
							load_tf_weights_in_funnel(snake_case     , snake_case     , snake_case  )

							# Save pytorch-model
							print(F'Save PyTorch model to {pytorch_dump_path}'  )
							torch.save(model.state_dict()     , snake_case  )


if __name__ == "__main__":
				_lowercase:	Optional[int]       			=		argparse.ArgumentParser()
				# Required parameters
				parser.add_argument(
				    '''--tf_checkpoint_path''', default=None, type=str, required=True, help='''Path to the TensorFlow checkpoint path.'''
				)
				parser.add_argument(
				    '''--config_file''',
				    default=None,
				    type=str,
				    required=True,
				    help='''The config json file corresponding to the pre-trained model. \nThis specifies the model architecture.''',
				)
				parser.add_argument(
				    '''--pytorch_dump_path''', default=None, type=str, required=True, help='''Path to the output PyTorch model.'''
				)
				parser.add_argument(
				    '''--base_model''', action='''store_true''', help='''Whether you want just the base model (no decoder) or not.'''
				)
				_lowercase:	List[Any]       			=		parser.parse_args()
				convert_tf_checkpoint_to_pytorch(
				    args.tf_checkpoint_path, args.config_file, args.pytorch_dump_path, args.base_model
				)







from math import ceil, sqrt






def _lowerCamelCase  (		snake_case = 1_000_000  ):
							_lowerCAmelCase							=							0

							for outer_width in range(3     , (limit // 4) + 2  ):
														if outer_width**2 > limit:
																					_lowerCAmelCase							=							max(ceil(sqrt(outer_width**2 - limit  )  )     , 1  )
														else:
																					_lowerCAmelCase							=							1
														if (outer_width - hole_width_lower_bound) % 2:
																					hole_width_lower_bound += 1

														answer += (outer_width - hole_width_lower_bound - 2) // 2 + 1

							return answer


if __name__ == "__main__":
				print(f"""{solution() = }""")






