



'''simple docstring'''





import requests







def snake_case__  (			__SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE )		->							None:
		UpperCAmelCase_						=				{"Content-Type": "application/json"}
		UpperCAmelCase_						=				requests.post(__SCREAMING_SNAKE_CASE			,     json={"text": message_body}			,     headers=__SCREAMING_SNAKE_CASE )
		if response.status_code != 200:
				UpperCAmelCase_						=				(
				    "Request to slack returned an error "
				    f'''{response.status_code}, the response is:\n{response.text}'''
				)
				raise ValueError(__SCREAMING_SNAKE_CASE )


if __name__ == "__main__":
			# Set the slack url to the one provided by Slack when you create the webhook at
			# https://my.slack.com/services/new/incoming-webhook/
			send_slack_message("<YOUR MESSAGE BODY>", "<SLACK CHANNEL URL>")






import heapq as hq
import math
from collections.abc import Iterator



class 	lowerCamelCase      :







					'''simple docstring'''







					def __init__(			self    ,	lowerCAmelCase     ):
							UpperCAmelCase_						=				str(id_     )
							UpperCAmelCase_						=				None
							UpperCAmelCase_						=				None
							UpperCAmelCase_						=				[]
							UpperCAmelCase_						=				{}  # {vertex:distance}



					def __lt__(			self    ,	lowerCAmelCase     ):
							return self.key < other.key



					def __repr__(			self     ):
							return self.id



					def    A__		(			self    ,	lowerCAmelCase     ):
							self.neighbors.append(lowerCAmelCase     )



					def    A__		(			self    ,	lowerCAmelCase    ,	lowerCAmelCase     ):
							UpperCAmelCase_						=				weight







def snake_case__  (			__SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE )		->							Optional[int]:
		# add the neighbors:
		graph[a - 1].add_neighbor(graph[b - 1] )
		graph[b - 1].add_neighbor(graph[a - 1] )
		# add the edges:
		graph[a - 1].add_edge(graph[b - 1]			,     __SCREAMING_SNAKE_CASE )
		graph[b - 1].add_edge(graph[a - 1]			,     __SCREAMING_SNAKE_CASE )







def snake_case__  (			__SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE )		->							list:
		UpperCAmelCase_						=				[]
		for u in graph:
				UpperCAmelCase_						=				math.inf
				UpperCAmelCase_						=				None
		UpperCAmelCase_						=				0
		UpperCAmelCase_						=				graph[:]
		while q:
				UpperCAmelCase_						=				min(__SCREAMING_SNAKE_CASE )
				q.remove(__SCREAMING_SNAKE_CASE )
				for v in u.neighbors:
						if (v in q) and (u.edges[v.id] < v.key):
								UpperCAmelCase_						=				u
								UpperCAmelCase_						=				u.edges[v.id]
		for i in range(1			,     len(__SCREAMING_SNAKE_CASE ) ):
				a.append((int(graph[i].id ) + 1, int(graph[i].pi.id ) + 1) )
		return a







def snake_case__  (			__SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE )		->							Iterator[tuple]:
		for u in graph:
				UpperCAmelCase_						=				math.inf
				UpperCAmelCase_						=				None
		UpperCAmelCase_						=				0

		UpperCAmelCase_						=				list(__SCREAMING_SNAKE_CASE )
		hq.heapify(__SCREAMING_SNAKE_CASE )

		while h:
				UpperCAmelCase_						=				hq.heappop(__SCREAMING_SNAKE_CASE )
				for v in u.neighbors:
						if (v in h) and (u.edges[v.id] < v.key):
								UpperCAmelCase_						=				u
								UpperCAmelCase_						=				u.edges[v.id]
								hq.heapify(__SCREAMING_SNAKE_CASE )

		for i in range(1			,     len(__SCREAMING_SNAKE_CASE ) ):
				yield (int(graph[i].id ) + 1, int(graph[i].pi.id ) + 1)







def snake_case__  (			)		->							None:
		pass


if __name__ == "__main__":
			import doctest

			doctest.testmod()

