
'''simple docstring'''

def       __lowercase  (_SCREAMING_SNAKE_CASE      :List[Any]       ):
				if number > 0:
								raise ValueError('''input must be a negative integer'''       )
				SCREAMING_SNAKE_CASE  :						Tuple      					= len(bin(_SCREAMING_SNAKE_CASE       )[3:]       )
				SCREAMING_SNAKE_CASE  :						Optional[Any]      					= bin(abs(_SCREAMING_SNAKE_CASE       ) - (1 << binary_number_length)       )[3:]
				SCREAMING_SNAKE_CASE  :						List[str]      					= (
				    (
				        '''1'''
				        + '''0''' * (binary_number_length - len(_SCREAMING_SNAKE_CASE       ))
				        + twos_complement_number
				    )
				    if number < 0
				    else '''0'''
				)
				return "0b" + twos_complement_number


if __name__ == "__main__":
	import doctest

	doctest.testmod()









'''simple docstring'''

from collections import deque






def       __lowercase  (_SCREAMING_SNAKE_CASE      :List[str]       ):
				SCREAMING_SNAKE_CASE  :						Optional[Any]      					= len(_SCREAMING_SNAKE_CASE       )
				SCREAMING_SNAKE_CASE  :						List[str]      					= deque()
				SCREAMING_SNAKE_CASE  :						Union[str, Any]      					= [False for _ in range(_SCREAMING_SNAKE_CASE       )]
				SCREAMING_SNAKE_CASE  :						Any      					= [-1 for _ in range(_SCREAMING_SNAKE_CASE       )]
				SCREAMING_SNAKE_CASE  :						Union[str, Any]      					= index_of[:]

				def strong_connect(_SCREAMING_SNAKE_CASE      :List[str]    ,	_SCREAMING_SNAKE_CASE      :Any    ,	_SCREAMING_SNAKE_CASE      :List[str]       ):
								SCREAMING_SNAKE_CASE  :						Any      					= index  # the number when this node is seen
								SCREAMING_SNAKE_CASE  :						str      					= index  # lowest rank node reachable from here
								index += 1
								stack.append(_SCREAMING_SNAKE_CASE       )
								SCREAMING_SNAKE_CASE  :						Optional[int]      					= True

								for w in g[v]:
												if index_of[w] == -1:
																SCREAMING_SNAKE_CASE  :						List[str]      					= strong_connect(_SCREAMING_SNAKE_CASE    ,	_SCREAMING_SNAKE_CASE    ,	_SCREAMING_SNAKE_CASE       )
																SCREAMING_SNAKE_CASE  :						Optional[int]      					= (
																    lowlink_of[w] if lowlink_of[w] < lowlink_of[v] else lowlink_of[v]
																)
												elif on_stack[w]:
																SCREAMING_SNAKE_CASE  :						List[str]      					= (
																    lowlink_of[w] if lowlink_of[w] < lowlink_of[v] else lowlink_of[v]
																)

								if lowlink_of[v] == index_of[v]:
												SCREAMING_SNAKE_CASE  :						str      					= []
												SCREAMING_SNAKE_CASE  :						Union[str, Any]      					= stack.pop()
												SCREAMING_SNAKE_CASE  :						Union[str, Any]      					= False
												component.append(_SCREAMING_SNAKE_CASE       )
												while w != v:
																SCREAMING_SNAKE_CASE  :						int      					= stack.pop()
																SCREAMING_SNAKE_CASE  :						Tuple      					= False
																component.append(_SCREAMING_SNAKE_CASE       )
												components.append(_SCREAMING_SNAKE_CASE       )
								return index

				SCREAMING_SNAKE_CASE  :						int      					= []
				for v in range(_SCREAMING_SNAKE_CASE       ):
								if index_of[v] == -1:
												strong_connect(_SCREAMING_SNAKE_CASE    ,	0    ,	_SCREAMING_SNAKE_CASE       )

				return components






def       __lowercase  (_SCREAMING_SNAKE_CASE      :List[str]    ,	_SCREAMING_SNAKE_CASE      :Optional[int]       ):
				SCREAMING_SNAKE_CASE  :						Tuple      					= [[] for _ in range(_SCREAMING_SNAKE_CASE       )]
				for u, v in edges:
								g[u].append(_SCREAMING_SNAKE_CASE       )
				return g


if __name__ == "__main__":
	# Test
	snake_case_			=     7
	snake_case_			=     [0, 0, 1, 2, 3, 3, 4, 4, 6]
	snake_case_			=     [1, 3, 2, 0, 1, 4, 5, 6, 5]
	snake_case_			=     [(u, v) for u, v in zip(source, target)]
	snake_case_			=     create_graph(n_vertices, edges)

	assert [[5], [6], [4], [3, 2, 1, 0]] == tarjan(g)




