from __future__ import annotations

from collections.abc import Iterator
from typing import Any
class 	_a  :



	"""simple docstring"""



	def __init__(   self       ,  lowerCAmelCase_       ):
		_lowercase   =data
		_lowercase   =None


	def __str__(   self       ):
		return F'''{self.data}'''

class 	_a  :



	"""simple docstring"""



	def __init__(   self       ):
		_lowercase   =None
		_lowercase   =None


	def __iter__(   self       ):
		_lowercase   =self.front
		while node:
			yield node.data
			_lowercase   =node.next


	def __len__(   self       ):
		return len(tuple(iter(self       )       )       )


	def __str__(   self       ):
		return " <- ".join(str(lowerCAmelCase_       ) for item in self       )


	def __lowerCAmelCase      (   self       ):
		return len(self       ) == 0


	def __lowerCAmelCase      (   self       ,  lowerCAmelCase_       ):
		_lowercase   =Node(lowerCAmelCase_       )
		if self.is_empty():
			_lowercase   =_lowercase   =node
		else:
			assert isinstance(self.rear       ,  lowerCAmelCase_       )
			_lowercase   =node
			_lowercase   =node


	def __lowerCAmelCase      (   self       ):
		if self.is_empty():
			raise IndexError("dequeue from empty queue"       )
		assert isinstance(self.front       ,  lowerCAmelCase_       )
		_lowercase   =self.front
		_lowercase   =self.front.next
		if self.front is None:
			_lowercase   =None
		return node.data


	def __lowerCAmelCase      (   self       ):
		_lowercase   =_lowercase   =None


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

						testmod()








from typing import Callable




def   snake_case_	(    snake_case	)    ->							Tuple:

       def wrapper(snake_case	):
              lowercase__:  Tuple         =  function_with_docstring.__doc__
              return target_function

       return wrapper


