

from __future__ import annotations
def   _lowerCAmelCase(						__A      ):
  global graph, reversed_graph, scc, component, visit, stack
  if visit[u]:
    return
  UpperCAmelCase          =	True
  for v in graph[u]:
    dfs(__A      )
  stack.append(__A      )
def   _lowerCAmelCase(						__A      ):
  global graph, reversed_graph, scc, component, visit, stack
  if visit[u]:
    return
  UpperCAmelCase          =	True
  component.append(__A      )
  for v in reversed_graph[u]:
    dfsa(__A      )
def   _lowerCAmelCase(						):
  global graph, reversed_graph, scc, component, visit, stack
  for i in range(__A      ):
    dfs(__A      )
  UpperCAmelCase          =	[False] * n
  for i in stack[::-1]:
    if visit[i]:
      continue
    UpperCAmelCase          =	[]
    dfsa(__A      )
    scc.append(__A      )
  return scc


if __name__ == "__main__":
      # n - no of nodes, m - no of edges
      lowerCAmelCase__,			lowerCAmelCase__							=			list(map(int, input().strip().split()))

      lowerCAmelCase__							=			[[] for _ in range(n)]  # graph
      lowerCAmelCase__							=			[[] for i in range(n)]  # reversed graph
      # input graph data (edges)
      for _ in range(m):
            lowerCAmelCase__,			lowerCAmelCase__							=			list(map(int, input().strip().split()))
            graph[u].append(v)
            reversed_graph[v].append(u)

      lowerCAmelCase__							=			[]
      lowerCAmelCase__							=			[False] * n
      lowerCAmelCase__							=			[]
      lowerCAmelCase__							=			[]
      print(kosaraju())






import matplotlib.pyplot as plt
import numpy as np
def   _lowerCAmelCase(						__A ,							__A ,							__A      ):
  UpperCAmelCase          =	len(__A      )  # Number of training samples
  UpperCAmelCase          =	np.eye(__A      )  # Initialize weights as identity matrix
  for j in range(__A      ):
    UpperCAmelCase          =	point - x_train[j]
    UpperCAmelCase          =	np.exp(diff @ diff.T / (-2.0 * tau**2)      )

  return weights
def   _lowerCAmelCase(						__A ,							__A ,							__A ,							__A      ):
  UpperCAmelCase          =	weight_matrix(__A ,							__A ,							__A      )
  UpperCAmelCase          =	np.linalg.inv(x_train.T @ weight_mat @ x_train      ) @ (
      x_train.T @ weight_mat @ y_train.T
  )

  return weight
def   _lowerCAmelCase(						__A ,							__A ,							__A      ):
  UpperCAmelCase          =	np.zeros(len(__A      )      )  # Initialize array of predictions
  for i, item in enumerate(__A      ):
    UpperCAmelCase          =	item @ local_weight(__A ,							__A ,							__A ,							__A      )

  return y_pred
def   _lowerCAmelCase(						__A ,							__A ,							__A      ):
  import seaborn as sns

  UpperCAmelCase          =	sns.load_dataset(__A      )
  UpperCAmelCase          =	np.array(data[x_name]      )
  UpperCAmelCase          =	np.array(data[y_name]      )

  UpperCAmelCase          =	np.ones(len(__A      )      )

  # pairing elements of one and x_data
  UpperCAmelCase          =	np.column_stack((one, x_data)      )

  return x_train, x_data, y_data
def   _lowerCAmelCase(						__A ,							__A ,							__A ,							__A ,							__A ,							__A ,							):
  UpperCAmelCase          =	np.sort(__A ,							axis=0      )
  plt.scatter(__A ,							__A ,							color="blue"      )
  plt.plot(
      x_train_sorted[:, 1] ,							preds[x_train[:, 1].argsort(0      )] ,							color="yellow" ,							linewidth=5 ,							)
  plt.title("Local Weighted Regression"      )
  plt.xlabel(__A      )
  plt.ylabel(__A      )
  plt.show()


if __name__ == "__main__":
      import doctest

      doctest.testmod()

      # Demo with a dataset from the seaborn module
      lowerCAmelCase__,			lowerCAmelCase__,			lowerCAmelCase__							=			load_data("tips", "total_bill", "tip")
      lowerCAmelCase__							=			local_weight_regression(training_data_x, tip, 5)
      plot_preds(training_data_x, predictions, total_bill, tip, "total_bill", "tip")



