

"""simple docstring"""





class        SCREAMING_SNAKE_CASE      :






					"""simple docstring"""



					def __init__( self    :       Any     ,lowercase_    :       int	):
						lowerCAmelCase__			:		Optional[int]						       =			data
						lowerCAmelCase__			:		int
						lowerCAmelCase__			:		Node

def 						__SCREAMING_SNAKE_CASE						(   A_				):
	lowerCAmelCase__			:		List[str]						       =			0
	lowerCAmelCase__			:		List[Any]						       =			x

def 						__SCREAMING_SNAKE_CASE						(   A_		,  A_				):
	lowerCAmelCase__       ,lowerCAmelCase__			:		List[Any]						       =			find_set(A_				), find_set(A_				)
	if x == y:
		return

	elif x.rank > y.rank:
		lowerCAmelCase__			:		Tuple						       =			x
	else:
		lowerCAmelCase__			:		Optional[Any]						       =			y
		if x.rank == y.rank:
			y.rank += 1

def 						__SCREAMING_SNAKE_CASE						(   A_				):
	if x != x.parent:
		lowerCAmelCase__			:		Tuple						       =			find_set(x.parent				)
	return x.parent

def 						__SCREAMING_SNAKE_CASE						(   A_				):
	lowerCAmelCase__			:		str						       =			({0, 1, 2}, {3, 4, 5})
	for s in sets:
		if node.data in s:
			return s
	lowerCAmelCase__			:		str						       =			f'{node.data} is not in {sets}'
	raise ValueError(A_				)

def 						__SCREAMING_SNAKE_CASE						(   ):
	lowerCAmelCase__			:		Union[str, Any]						       =			[Node(A_				) for i in range(6				)]
	for v in vertex:
		make_set(A_				)

	union_set(vertex[0]		,  vertex[1]				)
	union_set(vertex[1]		,  vertex[2]				)
	union_set(vertex[3]		,  vertex[4]				)
	union_set(vertex[3]		,  vertex[5]				)

	for nodea in vertex:
		for nodea in vertex:
			if find_python_set(A_				).isdisjoint(find_python_set(A_				)				):
				assert find_set(A_				) != find_set(A_				)
			else:
				assert find_set(A_				) == find_set(A_				)


if __name__ == "__main__":
							test_disjoint_set()







"""simple docstring"""





from itertools import permutations

def 						__SCREAMING_SNAKE_CASE						(   A_ = 5				):
	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
	lowerCAmelCase__			:		str						       =			list(range(gon_side + 1		,  0		,  -1				)				)
	lowerCAmelCase__			:		int						       =			list(range(gon_side + 2		,  gon_side * 2 + 1				)				)

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

	lowerCAmelCase__			:		Tuple						       =			f'Magic {gon_side}-gon ring is impossible'
	raise ValueError(A_				)

def 						__SCREAMING_SNAKE_CASE						(   A_		,  A_				):
	lowerCAmelCase__			:		Dict						       =			[0] * (gon_side * 3)
	lowerCAmelCase__			:		Optional[int]						       =			perm[0:3]
	perm.append(perm[1]				)

	lowerCAmelCase__			:		int						       =			1 if gon_side < 5 else 2

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

	return result

def 						__SCREAMING_SNAKE_CASE						(   A_				):
	if len(A_				) % 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

	lowerCAmelCase__			:		int						       =			sum(numbers[:3]				)

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


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




