



"""simple docstring"""







# Algorithm for the pigeonhole sorting










def   lowerCAmelCase__			(     lowerCamelCase__			) ->							Optional[Any]:
							A         =					min(snake_case_			)  # min() finds the minimum value
							A         =					max(snake_case_			)  # max() finds the maximum value

							A         =					max_val - min_val + 1  # size is difference of max and min values plus one

							# list of pigeonholes of size equal to the variable size
							A         =					[0] * size

							# Populate the pigeonholes.
							for x in a:
														assert isinstance(snake_case_				,      snake_case_			), "integers only please"
														holes[x - min_val] += 1

							# Putting the elements back into the array in an order.
							A         =					0
							for count in range(snake_case_			):
														while holes[count] > 0:
																					holes[count] -= 1
																					A         =					count + min_val
																					i += 1

def   lowerCAmelCase__			(     ) ->							Union[str, Any]:
							A         =					[8, 3, 2, 7, 4, 6, 8]
							pigeonhole_sort(snake_case_			)
							print('Sorted order is:'				,      ' '.join(snake_case_			)			)


if __name__ == "__main__":
					main()








"""simple docstring"""







from __future__ import annotations

import sys
from collections import deque
from typing import Generic, TypeVar

A    =			TypeVar('T')






class      UpperCAmelCase__		(      Generic[T]     ):
		lowerCAmelCase_       :	deque[T]  # Cache store of keys
		lowerCAmelCase_       :	set[T]  # References of the keys in cache
		lowerCAmelCase_       :	int 							=     10  # Maximum capacity of cache



		def __init__( self  :    int      ,							snake_case  :    int				)			->						None:






									'''simple docstring'''

									A         =					deque()
									A         =					set()
									if not n:
																A         =					sys.maxsize
									elif n < 0:
																raise ValueError('n should be an integer greater than 0.'				)
									else:
																A         =					n



		def 					A_		( self  :    Optional[Any]      ,							snake_case  :    T				)			->						None:






									'''simple docstring'''

									if x not in self.key_reference:
																if len(self.dq_store				) == LRUCache._MAX_CAPACITY:
																							A         =					self.dq_store.pop()
																							self.key_reference.remove(snake_case				)
									else:
																self.dq_store.remove(snake_case				)

									self.dq_store.appendleft(snake_case				)
									self.key_reference.add(snake_case				)



		def 					A_		( self  :    Dict				)			->						None:






									'''simple docstring'''

									for k in self.dq_store:
																print(snake_case				)



		def __repr__( self  :    int				)			->						str:






									'''simple docstring'''

									return f"""LRUCache({self._MAX_CAPACITY}) => {list(self.dq_store				)}"""


if __name__ == "__main__":
							import doctest

							doctest.testmod()

							A    =			LRUCache(4)
							lru_cache.refer('A')
							lru_cache.refer(2)
							lru_cache.refer(3)
							lru_cache.refer('A')
							lru_cache.refer(4)
							lru_cache.refer(5)
							lru_cache.display()

							print(lru_cache)
							assert str(lru_cache) == "LRUCache(4) => [5, 4, 'A', 3]"



