






from __future__ import annotations
def       snake_case_		(     lowerCAmelCase_       :						dict       ,       lowerCAmelCase_       :						str      ):
							__lowercase			,			__lowercase      :							Union[str, Any]				=     set(__a      ), [start]

							while stack:
														__lowercase      :							Tuple				=     stack.pop()
														explored.add(__a      )
														# Differences from BFS:
														# 1) pop last element instead of first one
														# 2) add adjacent elements to stack without exploring them
														for adj in reversed(graph[v]      ):
																					if adj not in explored:
																												stack.append(__a      )
							return explored


lowerCamelCase : Any						   =       {
    '''A''': ['''B''', '''C''', '''D'''],
    '''B''': ['''A''', '''D''', '''E'''],
    '''C''': ['''A''', '''F'''],
    '''D''': ['''B''', '''D'''],
    '''E''': ['''B''', '''F'''],
    '''F''': ['''C''', '''E''', '''G'''],
    '''G''': ['''F'''],
}

if __name__ == "__main__":
	import doctest

	doctest.testmod()
	print(depth_first_search(G, '''A'''))













from torch import nn

class 		lowerCAmelCase     ( nn.Module			):

					'''simple docstring'''

					def __init__(  self				:	Tuple		,     __a				:	int		,     __a				:	Optional[int]							)			->  Union[str, Any]:


												"""simple docstring"""

												super().__init__()
												__lowercase      :							int				=     class_size
												__lowercase      :							int				=     embed_size
												# self.mlp1 = nn.Linear(embed_size, embed_size)
												# self.mlp2 = (nn.Linear(embed_size, class_size))
												__lowercase      :							str				=     nn.Linear(__a		,     __a							)



					def       lowerCAmelCase				(  self				:	Tuple		,     __a				:	int							)			->  Tuple:


												"""simple docstring"""

												__lowercase      :							str				=     self.mlp(__a							)
												return logits