"""simple docstring"""


def       UpperCAmelCase					(	UpperCAmelCase      )       ->   int:
     return n * (2 * n - 1)







def       UpperCAmelCase					(	UpperCAmelCase      )       ->   bool:
     snake_case_       =      (1 + 24 * n) ** 0.5
     return ((1 + root) / 6) % 1 == 0







def       UpperCAmelCase					(	UpperCAmelCase = 144      )       ->   int:
     snake_case_       =      start
     snake_case_       =      hexagonal_num(UpperCAmelCase      )
     while not is_pentagonal(UpperCAmelCase      ):
          n += 1
          snake_case_       =      hexagonal_num(UpperCAmelCase      )
     return num


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


"""simple docstring"""


import copy

from ...configuration_utils import PretrainedConfig
from ...utils import logging


__UpperCamelCase								=    logging.get_logger(__name__)

__UpperCamelCase								=    {
    '''facebook/sam-vit-huge''': '''https://huggingface.co/facebook/sam-vit-huge/resolve/main/config.json''',
    '''facebook/sam-vit-large''': '''https://huggingface.co/facebook/sam-vit-large/resolve/main/config.json''',
    '''facebook/sam-vit-base''': '''https://huggingface.co/facebook/sam-vit-base/resolve/main/config.json''',
}




class 				UpperCamelCase      (       lowerCAmelCase__     ):







       def __init__(				self,							lowerCAmelCase__=256,							lowerCAmelCase__=1024,							lowerCAmelCase__=16,							lowerCAmelCase__=16,							lowerCAmelCase__=4,							lowerCAmelCase__="gelu",							lowerCAmelCase__=1e-6,							**lowerCAmelCase__,							)   ->   int:
            super().__init__(**lowerCAmelCase__)
            snake_case_       =      hidden_size
            snake_case_       =      image_size
            snake_case_       =      patch_size
            snake_case_       =      image_size // patch_size
            snake_case_       =      mask_input_channels
            snake_case_       =      num_point_embeddings
            snake_case_       =      hidden_act
            snake_case_       =      layer_norm_eps




class 				UpperCamelCase      (       lowerCAmelCase__     ):







       def __init__(				self,							lowerCAmelCase__=256,							lowerCAmelCase__="relu",							lowerCAmelCase__=2048,							lowerCAmelCase__=2,							lowerCAmelCase__=8,							lowerCAmelCase__=2,							lowerCAmelCase__=3,							lowerCAmelCase__=3,							lowerCAmelCase__=256,							lowerCAmelCase__=1e-6,							**lowerCAmelCase__,							)   ->   List[str]:
            super().__init__(**lowerCAmelCase__)
            snake_case_       =      hidden_size
            snake_case_       =      hidden_act
            snake_case_       =      mlp_dim
            snake_case_       =      num_hidden_layers
            snake_case_       =      num_attention_heads
            snake_case_       =      attention_downsample_rate
            snake_case_       =      num_multimask_outputs
            snake_case_       =      iou_head_depth
            snake_case_       =      iou_head_hidden_dim
            snake_case_       =      layer_norm_eps




class 				UpperCamelCase      (       lowerCAmelCase__     ):







       def __init__(				self,							lowerCAmelCase__=768,							lowerCAmelCase__=256,							lowerCAmelCase__=12,							lowerCAmelCase__=12,							lowerCAmelCase__=3,							lowerCAmelCase__=1024,							lowerCAmelCase__=16,							lowerCAmelCase__="gelu",							lowerCAmelCase__=1e-06,							lowerCAmelCase__=0.0,							lowerCAmelCase__=1e-10,							lowerCAmelCase__=True,							lowerCAmelCase__=4.0,							lowerCAmelCase__=True,							lowerCAmelCase__=True,							lowerCAmelCase__=14,							lowerCAmelCase__=[2, 5, 8, 11],							lowerCAmelCase__=128,							lowerCAmelCase__=None,							**lowerCAmelCase__,							)   ->   List[str]:
            super().__init__(**lowerCAmelCase__)

            snake_case_       =      hidden_size
            snake_case_       =      output_channels
            snake_case_       =      num_hidden_layers
            snake_case_       =      num_attention_heads
            snake_case_       =      num_channels
            snake_case_       =      image_size
            snake_case_       =      patch_size
            snake_case_       =      hidden_act
            snake_case_       =      layer_norm_eps
            snake_case_       =      attention_dropout
            snake_case_       =      initializer_range
            snake_case_       =      qkv_bias
            snake_case_       =      mlp_ratio
            snake_case_       =      use_abs_pos
            snake_case_       =      use_rel_pos
            snake_case_       =      window_size
            snake_case_       =      global_attn_indexes
            snake_case_       =      num_pos_feats
            snake_case_       =      int(hidden_size * mlp_ratio) if mlp_dim is None else mlp_dim




class 				UpperCamelCase      (       lowerCAmelCase__     ):
       SCREAMING_SNAKE_CASE_				=   "sam"
       SCREAMING_SNAKE_CASE_				=   True







       def __init__(				self,							lowerCAmelCase__=None,							lowerCAmelCase__=None,							lowerCAmelCase__=None,							lowerCAmelCase__=0.02,							**lowerCAmelCase__,							)   ->   Any:
            super().__init__(**lowerCAmelCase__)
            snake_case_       =      vision_config if vision_config is not None else {}
            snake_case_       =      prompt_encoder_config if prompt_encoder_config is not None else {}
            snake_case_       =      mask_decoder_config if mask_decoder_config is not None else {}

            if isinstance(lowerCAmelCase__,							lowerCAmelCase__):
                 snake_case_       =      vision_config.to_dict()
            if isinstance(lowerCAmelCase__,							lowerCAmelCase__):
                 snake_case_       =      prompt_encoder_config.to_dict()
            if isinstance(lowerCAmelCase__,							lowerCAmelCase__):
                 snake_case_       =      mask_decoder_config.to_dict()

            snake_case_       =      SamVisionConfig(**lowerCAmelCase__)
            snake_case_       =      SamPromptEncoderConfig(**lowerCAmelCase__)
            snake_case_       =      SamMaskDecoderConfig(**lowerCAmelCase__)
            snake_case_       =      initializer_range







       def 	a_		(				self)   ->   Dict:
            snake_case_       =      copy.deepcopy(self.__dict__)
            snake_case_       =      self.vision_config.to_dict()
            snake_case_       =      self.prompt_encoder_config.to_dict()
            snake_case_       =      self.mask_decoder_config.to_dict()
            snake_case_       =      self.__class__.model_type
            return output

