





class 				A_				:







       """simple docstring"""





       def __init__(    self	:	Optional[Any]  )						->					Optional[int]:
         _lowercase							= {}







       def    __UpperCAmelCase (    self	:	Union[str, Any]  )						->					None:
         print(self.vertex  )
         for i in self.vertex:
           print(__A						,' -> '						,' -> '.join([str(__A  ) for j in self.vertex[i]]  )  )







       def    __UpperCAmelCase (    self	:	Dict						,__A	:	int						,__A	:	int  )						->					None:
         # check if vertex is already present,
         if from_vertex in self.vertex:
           self.vertex[from_vertex].append(__A  )
         else:
           # else make a new vertex
           _lowercase							= [to_vertex]







       def    __UpperCAmelCase (    self	:	int  )						->					None:
         # visited array for storing already visited nodes
         _lowercase							= [False] * len(self.vertex  )

         # call the recursive helper function
         for i in range(len(self.vertex  )  ):
           if not visited[i]:
             self.dfs_recursive(__A						,__A  )







       def    __UpperCAmelCase (    self	:	str						,__A	:	int						,__A	:	list  )						->					None:
         # mark start vertex as visited
         _lowercase							= True

         print(__A						,end=' '  )

         # Recur for all the vertices that are adjacent to this node
         for i in self.vertex:
           if not visited[i]:
             self.dfs_recursive(__A						,__A  )


if __name__ == "__main__":
      snake_case 				=       Graph()
      g.add_edge(0, 1)
      g.add_edge(0, 2)
      g.add_edge(1, 2)
      g.add_edge(2, 0)
      g.add_edge(2, 3)
      g.add_edge(3, 3)

      g.print_graph()
      print("""DFS:""")
      g.dfs()

      # OUTPUT:
      # 0  ->  1 -> 2
      # 1  ->  2
      # 2  ->  0 -> 3
      # 3  ->  3
      # DFS:
      #  0 1 2 3






def 							SCREAMING_SNAKE_CASE__       (  snake_case__  :str			,							snake_case__  :int     )      ->						list[str]:
  return [sentence[i : i + ngram_size] for i in range(len(snake_case__     ) - ngram_size + 1     )]


if __name__ == "__main__":
      from doctest import testmod

      testmod()