




from __future__ import annotations





def      UpperCAmelCase  (						UpperCamelCase__   )     ->     str:







				'''simple docstring'''


				global graph, reversed_graph, scc, component, visit, stack
				if visit[u]:
								return
				__lowerCAmelCase					=  True
				for v in graph[u]:
								dfs(UpperCamelCase__   )
				stack.append(UpperCamelCase__   )





def      UpperCAmelCase  (						UpperCamelCase__   )     ->     str:







				'''simple docstring'''


				global graph, reversed_graph, scc, component, visit, stack
				if visit[u]:
								return
				__lowerCAmelCase					=  True
				component.append(UpperCamelCase__   )
				for v in reversed_graph[u]:
								dfsa(UpperCamelCase__   )





def      UpperCAmelCase  (						)     ->     Any:







				'''simple docstring'''


				global graph, reversed_graph, scc, component, visit, stack
				for i in range(UpperCamelCase__   ):
								dfs(UpperCamelCase__   )
				__lowerCAmelCase					=  [False] * n
				for i in stack[::-1]:
								if visit[i]:
												continue
								__lowerCAmelCase					=  []
								dfsa(UpperCamelCase__   )
								scc.append(UpperCamelCase__   )
				return scc


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

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

	__A						:		list[int]          =						[]
	__A						:		list[bool]          =						[False] * n
	__A						:		list[int]          =						[]
	__A						:		list[int]          =						[]
	print(kosaraju())







from typing import List, Optional, Tuple, Union

import torch

from ...utils import randn_tensor
from ..pipeline_utils import DiffusionPipeline, ImagePipelineOutput







class 	A__				(	__magic_name__      ):






				def __init__(		self   : Any       ,	a   : Any       ,	a   : Optional[int]  ):






							'''simple docstring'''







							super().__init__()
							self.register_modules(unet=a       ,	scheduler=a  )






				@torch.no_grad()
				def __call__(		self   : Optional[Any]       ,	a   : int = 1       ,	a   : Optional[Union[torch.Generator, List[torch.Generator]]] = None       ,	a   : int = 1_000       ,	a   : Optional[str] = "pil"       ,	a   : bool = True       ,	):






							'''simple docstring'''







							if isinstance(self.unet.config.sample_size       ,	a  ):
										lowerCAmelCase__ : Union[str, Any]   =						(
										    batch_size,
										    self.unet.config.in_channels,
										    self.unet.config.sample_size,
										    self.unet.config.sample_size,
										)
							else:
										lowerCAmelCase__ : str   =						(batch_size, self.unet.config.in_channels, *self.unet.config.sample_size)

							if self.device.type == "mps":
										# randn does not work reproducibly on mps
										lowerCAmelCase__ : Optional[int]   =						randn_tensor(a       ,	generator=a  )
										lowerCAmelCase__ : Optional[int]   =						image.to(self.device  )
							else:
										lowerCAmelCase__ : Dict   =						randn_tensor(a       ,	generator=a       ,	device=self.device  )

							# set step values
							self.scheduler.set_timesteps(a  )

							for t in self.progress_bar(self.scheduler.timesteps  ):
										# 1. predict noise model_output
										lowerCAmelCase__ : Tuple   =						self.unet(a       ,	a  ).sample

										# 2. compute previous image: x_t -> x_t-1
										lowerCAmelCase__ : Optional[Any]   =						self.scheduler.step(a       ,	a       ,	a       ,	generator=a  ).prev_sample

							lowerCAmelCase__ : str   =						(image / 2 + 0.5).clamp(0       ,	1  )
							lowerCAmelCase__ : Optional[int]   =						image.cpu().permute(0       ,	2       ,	3       ,	1  ).numpy()
							if output_type == "pil":
										lowerCAmelCase__ : int   =						self.numpy_to_pil(a  )

							if not return_dict:
										return (image,)

							return ImagePipelineOutput(images=a  )