


"""simple docstring"""







def 					a__			(				SCREAMING_SNAKE_CASE    :    Any				):  # noqa: E741


  '''simple docstring'''







  lowerCAmelCase     :     Optional[int]								=							len(SCREAMING_SNAKE_CASE				)
  lowerCAmelCase     :     Any								=							0
  lowerCAmelCase     :     Optional[Any]								=							[0] * n
  lowerCAmelCase     :     int								=							[False] * n
  lowerCAmelCase     :     int								=							[False] * n

  def dfs(SCREAMING_SNAKE_CASE    :    Dict				,      SCREAMING_SNAKE_CASE    :    str				,      SCREAMING_SNAKE_CASE    :    Any				,      SCREAMING_SNAKE_CASE    :    Optional[int]				):
    if parent == root:
      out_edge_count += 1
    lowerCAmelCase     :     Union[str, Any]								=							True
    lowerCAmelCase     :     Dict								=							at

    for to in l[at]:
      if to == parent:
        pass
      elif not visited[to]:
        lowerCAmelCase     :     int								=							dfs(SCREAMING_SNAKE_CASE				,      SCREAMING_SNAKE_CASE				,      SCREAMING_SNAKE_CASE				,      SCREAMING_SNAKE_CASE				)
        lowerCAmelCase     :     str								=							min(low[at]				,      low[to]				)

        # AP found via bridge
        if at < low[to]:
          lowerCAmelCase     :     List[str]								=							True
        # AP found via cycle
        if at == low[to]:
          lowerCAmelCase     :     str								=							True
      else:
        lowerCAmelCase     :     Optional[Any]								=							min(low[at]				,      SCREAMING_SNAKE_CASE				)
    return out_edge_count

  for i in range(SCREAMING_SNAKE_CASE				):
    if not visited[i]:
      lowerCAmelCase     :     Optional[int]								=							0
      lowerCAmelCase     :     Optional[int]								=							dfs(SCREAMING_SNAKE_CASE				,      SCREAMING_SNAKE_CASE				,      -1				,      SCREAMING_SNAKE_CASE				)
      lowerCAmelCase     :     Optional[int]								=							out_edge_count > 1

  for x in range(len(SCREAMING_SNAKE_CASE				)				):
    if is_art[x] is True:
      print(SCREAMING_SNAKE_CASE				)


# Adjacency list of graph
lowerCAmelCase__      				=   {
    0: [1, 2],
    1: [0, 2],
    2: [0, 1, 3, 5],
    3: [2, 4],
    4: [3],
    5: [2, 6, 8],
    6: [5, 7],
    7: [6, 8],
    8: [5, 7],
}





compute_ap(data)









"""simple docstring"""







def 					a__			(				SCREAMING_SNAKE_CASE    :    int				,      SCREAMING_SNAKE_CASE    :    int				):


  '''simple docstring'''







  while b:
    lowerCAmelCase						,  lowerCAmelCase     :     Any								=							b, a % b
  return a
def 					a__			(				SCREAMING_SNAKE_CASE    :    int				,      SCREAMING_SNAKE_CASE    :    int				):


  '''simple docstring'''







  return a if b == 0 else euclidean_gcd_recursive(SCREAMING_SNAKE_CASE				,      a % b				)
def 					a__			(				):


  '''simple docstring'''







  print(f"""euclidean_gcd(3, 5) = {euclidean_gcd(3				,      5				)}"""				)
  print(f"""euclidean_gcd(5, 3) = {euclidean_gcd(5				,      3				)}"""				)
  print(f"""euclidean_gcd(1, 3) = {euclidean_gcd(1				,      3				)}"""				)
  print(f"""euclidean_gcd(3, 6) = {euclidean_gcd(3				,      6				)}"""				)
  print(f"""euclidean_gcd(6, 3) = {euclidean_gcd(6				,      3				)}"""				)

  print(f"""euclidean_gcd_recursive(3, 5) = {euclidean_gcd_recursive(3				,      5				)}"""				)
  print(f"""euclidean_gcd_recursive(5, 3) = {euclidean_gcd_recursive(5				,      3				)}"""				)
  print(f"""euclidean_gcd_recursive(1, 3) = {euclidean_gcd_recursive(1				,      3				)}"""				)
  print(f"""euclidean_gcd_recursive(3, 6) = {euclidean_gcd_recursive(3				,      6				)}"""				)
  print(f"""euclidean_gcd_recursive(6, 3) = {euclidean_gcd_recursive(6				,      3				)}"""				)


if __name__ == "__main__":
     main()





