



"""simple docstring"""






from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_sentencepiece_available, is_torch_available


_lowercase					:					List[Any] 		=		{"configuration_bert_generation": ["BertGenerationConfig"]}

try:
		if not is_sentencepiece_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_lowercase					:					List[str] 		=		["BertGenerationTokenizer"]

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		_lowercase					:					List[str] 		=		[
		    "BertGenerationDecoder",
		    "BertGenerationEncoder",
		    "BertGenerationPreTrainedModel",
		    "load_tf_weights_in_bert_generation",
		]


if TYPE_CHECKING:
		from .configuration_bert_generation import BertGenerationConfig

		try:
				if not is_sentencepiece_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .tokenization_bert_generation import BertGenerationTokenizer

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_bert_generation import (
				    BertGenerationDecoder,
				    BertGenerationEncoder,
				    BertGenerationPreTrainedModel,
				    load_tf_weights_in_bert_generation,
				)

else:
		import sys

		_lowercase					:					Optional[int] 		=		_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)










'''simple docstring'''




from itertools import permutations




def     snake_case__     (			lowerCamelCase__					: int = 5      ) -> int:
					if gon_side < 3 or gon_side > 5:
										raise ValueError('''gon_side must be in the range [3, 5]'''      )

					# Since it's 16, we know 10 is on the outer ring
					# Put the big numbers at the end so that they are never the first number
					A_			:  int			=				list(range(gon_side + 1      ,		0      ,		-1      )      )
					A_			:  List[Any]			=				list(range(gon_side + 2      ,		gon_side * 2 + 1      )      )

					for perm in permutations(small_numbers + big_numbers      ):
										A_			:  Optional[int]			=				generate_gon_ring(lowerCamelCase__      ,		list(lowerCamelCase__      )      )
										if is_magic_gon(lowerCamelCase__      ):
															return int(''''''.join(str(lowerCamelCase__      ) for n in numbers      )      )

					A_			:  Optional[Any]			=				f'Magic {gon_side}-gon ring is impossible'
					raise ValueError(lowerCamelCase__      )




def     snake_case__     (			lowerCamelCase__					: int      ,		lowerCamelCase__					: list[int]      ) -> list[int]:
					A_			:  List[Any]			=				[0] * (gon_side * 3)
					A_			:  Optional[Any]			=				perm[0:3]
					perm.append(perm[1]      )

					A_			:  Optional[Any]			=				1 if gon_side < 5 else 2

					for i in range(1      ,		len(lowerCamelCase__      ) // 3 + magic_number      ):
										A_			:  List[str]			=				perm[2 * i + 1]
										A_			:  str			=				result[3 * i - 1]
										A_			:  Union[str, Any]			=				perm[2 * i + 2]

					return result




def     snake_case__     (			lowerCamelCase__					: list[int]      ) -> bool:
					if len(lowerCamelCase__      ) % 3 != 0:
										raise ValueError('''a gon ring should have a length that is a multiple of 3'''      )

					if min(numbers[::3]      ) != numbers[0]:
										return False

					A_			:  Union[str, Any]			=				sum(numbers[:3]      )

					return all(sum(numbers[i : i + 3]      ) == total for i in range(3      ,		len(lowerCamelCase__      )      ,		3      )      )


if __name__ == "__main__":
							print(solution())



