






"""simple docstring"""


class 						__UpperCamelCase     :
					def __init__(							self							:	int     , UpperCAmelCase							:	int   )	->       str:
											lowerCAmelCase   :List[Any]						=			n
											lowerCAmelCase   :int						=			[None] * self.n
											lowerCAmelCase   :List[str]						=			0  # index of the first element
											lowerCAmelCase   :List[Any]						=			0
											lowerCAmelCase   :Dict						=			0
					def __len__(							self							:	List[Any]   )	->       int:
											return self.size
					def        UpperCAmelCase__ (							self							:	Optional[Any]   )	->       bool:
											return self.size == 0
					def        UpperCAmelCase__ (							self							:	Optional[Any]   )	->       Any:
											return False if self.is_empty() else self.array[self.front]
					def        UpperCAmelCase__ (							self							:	Union[str, Any]     , UpperCAmelCase							:	str   )	->       int:
											if self.size >= self.n:
																	raise Exception('QUEUE IS FULL'   )

											lowerCAmelCase   :int						=			data
											lowerCAmelCase   :str						=			(self.rear + 1) % self.n
											self.size += 1
											return self
					def        UpperCAmelCase__ (							self							:	Any   )	->       Any:
											if self.size == 0:
																	raise Exception('UNDERFLOW'   )

											lowerCAmelCase   :Any						=			self.array[self.front]
											lowerCAmelCase   :Optional[Any]						=			None
											lowerCAmelCase   :Any						=			(self.front + 1) % self.n
											self.size -= 1
											return temp







"""simple docstring"""


from abc import ABC, abstractmethod
from argparse import ArgumentParser




class 						__UpperCamelCase     (     UpperCamelCase						):
					@staticmethod
					@abstractmethod
					def        UpperCAmelCase__ (							UpperCAmelCase							:	ArgumentParser   )	->       Optional[Any]:
											raise NotImplementedError()
					@abstractmethod
					def        UpperCAmelCase__ (							self							:	str   )	->       List[str]:
											raise NotImplementedError()