__lowerCamelCase			: Dict							   =		{0: [2, 3], 1: [0], 2: [1], 3: [4], 4: []}

__lowerCamelCase			: int							   =		{0: [1, 2, 3], 1: [2], 2: [0], 3: [4], 4: [5], 5: [3]}



def 	__SCREAMING_SNAKE_CASE  (					__UpperCamelCase    :       dict[int, list[int]] ,     __UpperCamelCase    :       int ,     __UpperCamelCase    :       list[bool]	)							->					list[int]:







  """simple docstring"""





  SCREAMING_SNAKE_CASE__										=      True
  SCREAMING_SNAKE_CASE__										=      []

  for neighbour in graph[vert]:
    if not visited[neighbour]:
      order += topology_sort(__UpperCamelCase ,     __UpperCamelCase ,     __UpperCamelCase	)

  order.append(__UpperCamelCase	)

  return order



def 	__SCREAMING_SNAKE_CASE  (					__UpperCamelCase    :       dict[int, list[int]] ,     __UpperCamelCase    :       int ,     __UpperCamelCase    :       list[bool]	)							->					list[int]:







  """simple docstring"""





  SCREAMING_SNAKE_CASE__										=      True
  SCREAMING_SNAKE_CASE__										=      [vert]

  for neighbour in reversed_graph[vert]:
    if not visited[neighbour]:
      component += find_components(__UpperCamelCase ,     __UpperCamelCase ,     __UpperCamelCase	)

  return component






def 	__SCREAMING_SNAKE_CASE  (					__UpperCamelCase    :       dict[int, list[int]]	)							->					list[list[int]]:







  """simple docstring"""





  SCREAMING_SNAKE_CASE__										=      len(__UpperCamelCase	) * [False]
  SCREAMING_SNAKE_CASE__										=      {vert: [] for vert in range(len(__UpperCamelCase	)	)}

  for vert, neighbours in graph.items():
    for neighbour in neighbours:
      reversed_graph[neighbour].append(__UpperCamelCase	)

  SCREAMING_SNAKE_CASE__										=      []
  for i, was_visited in enumerate(__UpperCamelCase	):
    if not was_visited:
      order += topology_sort(__UpperCamelCase ,     __UpperCamelCase ,     __UpperCamelCase	)

  SCREAMING_SNAKE_CASE__										=      []
  SCREAMING_SNAKE_CASE__										=      len(__UpperCamelCase	) * [False]

  for i in range(len(__UpperCamelCase	)	):
    SCREAMING_SNAKE_CASE__										=      order[len(__UpperCamelCase	) - i - 1]
    if not visited[vert]:
      SCREAMING_SNAKE_CASE__										=      find_components(__UpperCamelCase ,     __UpperCamelCase ,     __UpperCamelCase	)
      components_list.append(__UpperCamelCase	)

  return components_list

# coding=utf-8
# Copyright 2023 The HuggingFace Inc. team.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# this script dumps information about the environment

import os
import platform
import sys


__lowerCamelCase			: Union[str, Any]							   =		'''3'''

print('''Python version:''', sys.version)

print('''OS platform:''', platform.platform())
print('''OS architecture:''', platform.machine())

try:
   import torch

   print('''Torch version:''', torch.__version__)
   print('''Cuda available:''', torch.cuda.is_available())
   print('''Cuda version:''', torch.version.cuda)
   print('''CuDNN version:''', torch.backends.cudnn.version())
   print('''Number of GPUs available:''', torch.cuda.device_count())
except ImportError:
   print('''Torch version:''', None)

try:
   import transformers

   print('''transformers version:''', transformers.__version__)
except ImportError:
   print('''transformers version:''', None)
