






'''simple docstring'''





from __future__ import annotations
def __UpperCAmelCase (			A			:	int						)  -> Any:
			global graph, reversed_graph, scc, component, visit, stack
			if visit[u]:
						return
			UpperCAmelCase_     :   Optional[int]       =   True
			for v in graph[u]:
						dfs(A						)
			stack.append(A						)
def __UpperCAmelCase (			A			:	List[str]						)  -> int:
			global graph, reversed_graph, scc, component, visit, stack
			if visit[u]:
						return
			UpperCAmelCase_     :   Optional[int]       =   True
			component.append(A						)
			for v in reversed_graph[u]:
						dfsa(A						)
def __UpperCAmelCase (			)  -> List[Any]:
			global graph, reversed_graph, scc, component, visit, stack
			for i in range(A						):
						dfs(A						)
			UpperCAmelCase_     :   List[Any]       =   [False] * n
			for i in stack[::-1]:
						if visit[i]:
									continue
						UpperCAmelCase_     :   Any       =   []
						dfsa(A						)
						scc.append(A						)
			return scc


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

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

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










'''simple docstring'''





from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available, is_vision_available


_UpperCamelCase		:		Optional[Any]								=			{'configuration_vit_hybrid': ['VIT_HYBRID_PRETRAINED_CONFIG_ARCHIVE_MAP', 'ViTHybridConfig']}

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						_UpperCamelCase		:		Optional[int]								=			[
						    'VIT_HYBRID_PRETRAINED_MODEL_ARCHIVE_LIST',
						    'ViTHybridForImageClassification',
						    'ViTHybridModel',
						    'ViTHybridPreTrainedModel',
						]

try:
						if not is_vision_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						_UpperCamelCase		:		str								=			['ViTHybridImageProcessor']


if TYPE_CHECKING:
						from .configuration_vit_hybrid import VIT_HYBRID_PRETRAINED_CONFIG_ARCHIVE_MAP, ViTHybridConfig

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_vit_hybrid import (
												    VIT_HYBRID_PRETRAINED_MODEL_ARCHIVE_LIST,
												    ViTHybridForImageClassification,
												    ViTHybridModel,
												    ViTHybridPreTrainedModel,
												)

						try:
												if not is_vision_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .image_processing_vit_hybrid import ViTHybridImageProcessor


else:
						import sys

						_UpperCamelCase		:		Tuple								=			_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)


