code: 
  
  
  
  
  import argparse
  import json
  from pathlib import Path
  
  import requests
  import torch
  from huggingface_hub import hf_hub_download
  from PIL import Image
  
  from transformers import ConvNextConfig, ConvNextForImageClassification, ConvNextImageProcessor
  from transformers.utils import logging
  
  
  logging.set_verbosity_info()
  _lowerCAmelCase     :			List[str]    =logging.get_logger(__name__)
  
  
  
  def  _A  (			SCREAMING_SNAKE_CASE			):
  	UpperCAmelCase__:  Any		       =   ConvNextConfig()
  
  	if "tiny" in checkpoint_url:
  		UpperCAmelCase__:  Any		       =   [3, 3, 9, 3]
  		UpperCAmelCase__:  List[Any]		       =   [9_6, 1_9_2, 3_8_4, 7_6_8]
  	if "small" in checkpoint_url:
  		UpperCAmelCase__:  List[Any]		       =   [3, 3, 2_7, 3]
  		UpperCAmelCase__:  int		       =   [9_6, 1_9_2, 3_8_4, 7_6_8]
  	if "base" in checkpoint_url:
  		UpperCAmelCase__:  int		       =   [3, 3, 2_7, 3]
  		UpperCAmelCase__:  Tuple		       =   [1_2_8, 2_5_6, 5_1_2, 1_0_2_4]
  	if "large" in checkpoint_url:
  		UpperCAmelCase__:  Tuple		       =   [3, 3, 2_7, 3]
  		UpperCAmelCase__:  str		       =   [1_9_2, 3_8_4, 7_6_8, 1_5_3_6]
  	if "xlarge" in checkpoint_url:
  		UpperCAmelCase__:  str		       =   [3, 3, 2_7, 3]
  		UpperCAmelCase__:  Tuple		       =   [2_5_6, 5_1_2, 1_0_2_4, 2_0_4_8]
  
  	if "1k" in checkpoint_url:
  		UpperCAmelCase__:  Union[str, Any]		       =   1_0_0_0
  		UpperCAmelCase__:  List[Any]		       =   '''imagenet-1k-id2label.json'''
  		UpperCAmelCase__:  Union[str, Any]		       =   (1, 1_0_0_0)
  	else:
  		UpperCAmelCase__:  Optional[Any]		       =   2_1_8_4_1
  		UpperCAmelCase__:  str		       =   '''imagenet-22k-id2label.json'''
  		UpperCAmelCase__:  Optional[int]		       =   (1, 2_1_8_4_1)
  
  	UpperCAmelCase__:  Any		       =   '''huggingface/label-files'''
  	UpperCAmelCase__:  Any		       =   num_labels
  	UpperCAmelCase__:  Tuple		       =   json.load(open(hf_hub_download(SCREAMING_SNAKE_CASE  ,SCREAMING_SNAKE_CASE  ,repo_type="dataset"			)  ,"r"			)			)
  	UpperCAmelCase__:  int		       =   {int(SCREAMING_SNAKE_CASE			): v for k, v in idalabel.items()}
  	if "1k" not in checkpoint_url:
  		# this dataset contains 21843 labels but the model only has 21841
  		# we delete the classes as mentioned in https://github.com/google-research/big_transfer/issues/18
  		del idalabel[9_2_0_5]
  		del idalabel[1_5_0_2_7]
  	UpperCAmelCase__:  str		       =   idalabel
  	UpperCAmelCase__:  List[str]		       =   {v: k for k, v in idalabel.items()}
  	UpperCAmelCase__:  Tuple		       =   hidden_sizes
  	UpperCAmelCase__:  List[str]		       =   depths
  
  	return config, expected_shape
  
  
  
  def  _A  (			SCREAMING_SNAKE_CASE			):
  	if "downsample_layers.0.0" in name:
  		UpperCAmelCase__:  Any		       =   name.replace("downsample_layers.0.0"  ,"embeddings.patch_embeddings"			)
  	if "downsample_layers.0.1" in name:
  		UpperCAmelCase__:  Any		       =   name.replace("downsample_layers.0.1"  ,"embeddings.norm"			)  # we rename to layernorm later on
  	if "downsample_layers.1.0" in name:
  		UpperCAmelCase__:  int		       =   name.replace("downsample_layers.1.0"  ,"stages.1.downsampling_layer.0"			)
  	if "downsample_layers.1.1" in name:
  		UpperCAmelCase__:  Optional[int]		       =   name.replace("downsample_layers.1.1"  ,"stages.1.downsampling_layer.1"			)
  	if "downsample_layers.2.0" in name:
  		UpperCAmelCase__:  Optional[int]		       =   name.replace("downsample_layers.2.0"  ,"stages.2.downsampling_layer.0"			)
  	if "downsample_layers.2.1" in name:
  		UpperCAmelCase__:  int		       =   name.replace("downsample_layers.2.1"  ,"stages.2.downsampling_layer.1"			)
  	if "downsample_layers.3.0" in name:
  		UpperCAmelCase__:  Tuple		       =   name.replace("downsample_layers.3.0"  ,"stages.3.downsampling_layer.0"			)
  	if "downsample_layers.3.1" in name:
  		UpperCAmelCase__:  Any		       =   name.replace("downsample_layers.3.1"  ,"stages.3.downsampling_layer.1"			)
  	if "stages" in name and "downsampling_layer" not in name:
  		# stages.0.0. for instance should be renamed to stages.0.layers.0.
  		UpperCAmelCase__:  Dict		       =   name[: len("stages.0"			)] + '''.layers''' + name[len("stages.0"			) :]
  	if "stages" in name:
  		UpperCAmelCase__:  List[str]		       =   name.replace("stages"  ,"encoder.stages"			)
  	if "norm" in name:
  		UpperCAmelCase__:  Union[str, Any]		       =   name.replace("norm"  ,"layernorm"			)
  	if "gamma" in name:
  		UpperCAmelCase__:  Any		       =   name.replace("gamma"  ,"layer_scale_parameter"			)
  	if "head" in name:
  		UpperCAmelCase__:  Optional[int]		       =   name.replace("head"  ,"classifier"			)
  
  	return name
  
  
  
  def  _A  (			):
  	UpperCAmelCase__:  Union[str, Any]		       =   '''http://images.cocodataset.org/val2017/000000039769.jpg'''
  	UpperCAmelCase__:  Union[str, Any]		       =   Image.open(requests.get(SCREAMING_SNAKE_CASE  ,stream=SCREAMING_SNAKE_CASE			).raw			)
  	return im
  
  
  
  @torch.no_grad()
  def  _A  (			SCREAMING_SNAKE_CASE  ,SCREAMING_SNAKE_CASE			):
  	UpperCAmelCase__:  int		       =   get_convnext_config(SCREAMING_SNAKE_CASE			)
  	# load original state_dict from URL
  	UpperCAmelCase__:  Any		       =   torch.hub.load_state_dict_from_url(SCREAMING_SNAKE_CASE			)['''model''']
  	# rename keys
  	for key in state_dict.copy().keys():
  		UpperCAmelCase__:  List[str]		       =   state_dict.pop(SCREAMING_SNAKE_CASE			)
  		UpperCAmelCase__:  Tuple		       =   val
  	# add prefix to all keys expect classifier head
  	for key in state_dict.copy().keys():
  		UpperCAmelCase__:  List[Any]		       =   state_dict.pop(SCREAMING_SNAKE_CASE			)
  		if not key.startswith("classifier"			):
  			UpperCAmelCase__:  Dict		       =   '''convnext.''' + key
  		UpperCAmelCase__:  Optional[int]		       =   val
  
  	# load HuggingFace model
  	UpperCAmelCase__:  Dict		       =   ConvNextForImageClassification(SCREAMING_SNAKE_CASE			)
  	model.load_state_dict(SCREAMING_SNAKE_CASE			)
  	model.eval()
  
  	# Check outputs on an image, prepared by ConvNextImageProcessor
  	UpperCAmelCase__:  Optional[int]		       =   2_2_4 if '''224''' in checkpoint_url else 3_8_4
  	UpperCAmelCase__:  int		       =   ConvNextImageProcessor(size=SCREAMING_SNAKE_CASE			)
  	UpperCAmelCase__:  Union[str, Any]		       =   image_processor(images=prepare_img()  ,return_tensors="pt"			).pixel_values
  
  	UpperCAmelCase__:  str		       =   model(SCREAMING_SNAKE_CASE			).logits
  
  	# note: the logits below were obtained without center cropping
  	if checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_tiny_1k_224_ema.pth":
  		UpperCAmelCase__:  Dict		       =   torch.tensor([-0.12_10, -0.66_05, 0.19_18]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_small_1k_224_ema.pth":
  		UpperCAmelCase__:  Union[str, Any]		       =   torch.tensor([-0.44_73, -0.18_47, -0.63_65]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_base_1k_224_ema.pth":
  		UpperCAmelCase__:  List[Any]		       =   torch.tensor([0.45_25, 0.75_39, 0.03_08]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_base_1k_384.pth":
  		UpperCAmelCase__:  Optional[int]		       =   torch.tensor([0.35_61, 0.63_50, -0.03_84]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_large_1k_224_ema.pth":
  		UpperCAmelCase__:  int		       =   torch.tensor([0.41_74, -0.09_89, 0.14_89]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_large_1k_384.pth":
  		UpperCAmelCase__:  List[Any]		       =   torch.tensor([0.25_13, -0.13_49, -0.16_13]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_base_22k_224.pth":
  		UpperCAmelCase__:  List[Any]		       =   torch.tensor([1.29_80, 0.36_31, -0.11_98]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_large_22k_224.pth":
  		UpperCAmelCase__:  str		       =   torch.tensor([1.29_63, 0.12_27, 0.17_23]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_xlarge_22k_224.pth":
  		UpperCAmelCase__:  Union[str, Any]		       =   torch.tensor([1.79_56, 0.83_90, 0.28_20]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_base_22k_1k_224.pth":
  		UpperCAmelCase__:  Tuple		       =   torch.tensor([-0.28_22, -0.05_02, -0.08_78]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_base_22k_1k_384.pth":
  		UpperCAmelCase__:  Tuple		       =   torch.tensor([-0.56_72, -0.07_30, -0.43_48]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_large_22k_1k_224.pth":
  		UpperCAmelCase__:  Union[str, Any]		       =   torch.tensor([0.26_81, 0.23_65, 0.62_46]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_large_22k_1k_384.pth":
  		UpperCAmelCase__:  Optional[int]		       =   torch.tensor([-0.26_42, 0.39_31, 0.51_16]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_xlarge_22k_1k_224_ema.pth":
  		UpperCAmelCase__:  Any		       =   torch.tensor([-0.66_77, -0.18_73, -0.83_79]			)
  	elif checkpoint_url == "https://dl.fbaipublicfiles.com/convnext/convnext_xlarge_22k_1k_384_ema.pth":
  		UpperCAmelCase__:  str		       =   torch.tensor([-0.77_49, -0.29_67, -0.64_44]			)
  	else:
  		raise ValueError(f"Unknown URL: {checkpoint_url}"			)
  
  	assert torch.allclose(logits[0, :3]  ,SCREAMING_SNAKE_CASE  ,atol=1e-3			)
  	assert logits.shape == expected_shape
  
  	Path(SCREAMING_SNAKE_CASE			).mkdir(exist_ok=SCREAMING_SNAKE_CASE			)
  	print(f"Saving model to {pytorch_dump_folder_path}"			)
  	model.save_pretrained(SCREAMING_SNAKE_CASE			)
  	print(f"Saving image processor to {pytorch_dump_folder_path}"			)
  	image_processor.save_pretrained(SCREAMING_SNAKE_CASE			)
  
  	print("Pushing model to the hub..."			)
  	UpperCAmelCase__:  Any		       =   '''convnext'''
  	if "tiny" in checkpoint_url:
  		model_name += "-tiny"
  	elif "small" in checkpoint_url:
  		model_name += "-small"
  	elif "base" in checkpoint_url:
  		model_name += "-base"
  	elif "xlarge" in checkpoint_url:
  		model_name += "-xlarge"
  	elif "large" in checkpoint_url:
  		model_name += "-large"
  	if "224" in checkpoint_url:
  		model_name += "-224"
  	elif "384" in checkpoint_url:
  		model_name += "-384"
  	if "22k" in checkpoint_url and "1k" not in checkpoint_url:
  		model_name += "-22k"
  	if "22k" in checkpoint_url and "1k" in checkpoint_url:
  		model_name += "-22k-1k"
  
  	model.push_to_hub(
  	    repo_path_or_name=Path(SCREAMING_SNAKE_CASE  ,SCREAMING_SNAKE_CASE			)  ,organization="nielsr"  ,commit_message="Add model"  ,)
  
  
  if __name__ == "__main__":
  					_lowerCAmelCase     :			Optional[int]    =argparse.ArgumentParser()
  					# Required parameters
  					parser.add_argument(
  					    """--checkpoint_url""",
  					    default="""https://dl.fbaipublicfiles.com/convnext/convnext_tiny_1k_224_ema.pth""",
  					    type=str,
  					    help="""URL of the original ConvNeXT checkpoint you'd like to convert.""",
  					)
  					parser.add_argument(
  					    """--pytorch_dump_folder_path""",
  					    default=None,
  					    type=str,
  					    required=True,
  					    help="""Path to the output PyTorch model directory.""",
  					)
  
  					_lowerCAmelCase     :			List[str]    =parser.parse_args()
  					convert_convnext_checkpoint(args.checkpoint_url, args.pytorch_dump_folder_path)
style_context: 
  
  from __future__ import annotations
  
  from collections import Counter
  
  
  
  def  _A  (			SCREAMING_SNAKE_CASE			):
  	UpperCAmelCase__:  Optional[Any]		       =   [True] * n
  	UpperCAmelCase__:  Any		       =   False
  	UpperCAmelCase__:  Tuple		       =   False
  	UpperCAmelCase__:  Optional[Any]		       =   True
  
  	for i in range(3  ,int(n**0.5 + 1			)  ,2			):
  		UpperCAmelCase__:  Any		       =   i * 2
  		while index < n:
  			UpperCAmelCase__:  Optional[int]		       =   False
  			UpperCAmelCase__:  Tuple		       =   index + i
  
  	UpperCAmelCase__:  int		       =   [2]
  
  	for i in range(3  ,SCREAMING_SNAKE_CASE  ,2			):
  		if is_prime[i]:
  			primes.append(SCREAMING_SNAKE_CASE			)
  
  	return primes
  
  
  
  def  _A  (			SCREAMING_SNAKE_CASE			):
  	UpperCAmelCase__:  List[Any]		       =   str(SCREAMING_SNAKE_CASE			)
  	UpperCAmelCase__:  Tuple		       =   []
  	UpperCAmelCase__:  Optional[int]		       =   ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
  
  	for duplicate in Counter(SCREAMING_SNAKE_CASE			) - Counter(set(SCREAMING_SNAKE_CASE			)			):
  		UpperCAmelCase__:  Optional[Any]		       =   [int(number_str.replace(SCREAMING_SNAKE_CASE  ,SCREAMING_SNAKE_CASE			)			) for digit in digits]
  		replacements.append(SCREAMING_SNAKE_CASE			)
  
  	return replacements
  
  
  
  def  _A  (			SCREAMING_SNAKE_CASE = 8			):
  	UpperCAmelCase__:  Union[str, Any]		       =   set()
  
  	# Filter primes with less than 3 replaceable digits
  	UpperCAmelCase__:  Optional[Any]		       =   {
  	    x for x in set(prime_sieve(1_0_0_0_0_0_0			)			) if len(str(SCREAMING_SNAKE_CASE			)			) - len(set(str(SCREAMING_SNAKE_CASE			)			)			) >= 3
  	}
  
  	for prime in primes:
  		if prime in numbers_checked:
  			continue
  
  		UpperCAmelCase__:  Optional[int]		       =   digit_replacements(SCREAMING_SNAKE_CASE			)
  
  		for family in replacements:
  			numbers_checked.update(SCREAMING_SNAKE_CASE			)
  			UpperCAmelCase__:  Dict		       =   primes.intersection(SCREAMING_SNAKE_CASE			)
  
  			if len(SCREAMING_SNAKE_CASE			) != family_length:
  				continue
  
  			return min(SCREAMING_SNAKE_CASE			)
  
  	return -1
  
  
  if __name__ == "__main__":
  					print(solution())