'''simple docstring'''

def  _lowerCAmelCase				(				__a = 99_80_01      )  ->      int:
     '''simple docstring'''







     _UpperCamelCase  :Tuple       =0
     for i in range(9_99			,      99			,      -1      ):  # 3 digit numbers range from 999 down to 100
          for j in range(9_99			,      99			,      -1      ):
               _UpperCamelCase  :Tuple       =str(i * j      )
               if product_string == product_string[::-1] and i * j < n:
                    _UpperCamelCase  :Dict       =max(__a			,      i * j      )
     return answer


if __name__ == "__main__":
      print(f"{solution() = }")





'''simple docstring'''






from __future__ import annotations

from collections.abc import Iterable, Iterator
from typing import Any, Generic, TypeVar

lowercase						:   Union[str, Any]      						=							TypeVar('''T''', bound=bool)

class 	SCREAMING_SNAKE_CASE_		(							Generic[T]					):



 def __init__(	self ,		A			):






        '''simple docstring'''




        lowercase	:		T    =   value
        lowercase	:		SkewNode[T] | None    =   None
        lowercase	:		SkewNode[T] | None    =   None



 @property
 def  SCREAMING_SNAKE_CASE(	self			):






        '''simple docstring'''




        return self._value





 @staticmethod
 def  SCREAMING_SNAKE_CASE(	A ,		A			):






        '''simple docstring'''




        if not roota:
               return roota

        if not roota:
               return roota

        if roota.value > roota.value:
               lowercase,  lowercase	:		Union[str, Any]    =   roota, roota

        lowercase	:		Optional[int]    =   roota
        lowercase	:		Tuple    =   roota.right
        lowercase	:		Union[str, Any]    =   roota.left
        lowercase	:		Any    =   SkewNode.merge(A ,		A			)

        return result






class 	SCREAMING_SNAKE_CASE_		(							Generic[T]					):



 def __init__(	self ,		A = ()			):






        '''simple docstring'''




        lowercase	:		SkewNode[T] | None    =   None
        if data:
               for item in data:
                      self.insert(A			)



 def __bool__(	self			):






        '''simple docstring'''




        return self._root is not None



 def __iter__(	self			):






        '''simple docstring'''




        lowercase	:		list[Any]    =   []
        while self:
               result.append(self.pop()			)

        # Pushing items back to the heap not to clear it.
        for item in result:
               self.insert(A			)

        return iter(A			)



 def  SCREAMING_SNAKE_CASE(	self ,		A			):






        '''simple docstring'''




        lowercase	:		List[str]    =   SkewNode.merge(self._root ,		SkewNode(A			)			)



 def  SCREAMING_SNAKE_CASE(	self			):






        '''simple docstring'''




        lowercase	:		List[Any]    =   self.top()
        lowercase	:		int    =   (
            SkewNode.merge(self._root.left ,		self._root.right			) if self._root else None
        )

        return result



 def  SCREAMING_SNAKE_CASE(	self			):






        '''simple docstring'''




        if not self._root:
               raise IndexError('''Can\'t get top element for the empty heap.'''			)
        return self._root.value





 def  SCREAMING_SNAKE_CASE(	self			):






        '''simple docstring'''




        lowercase	:		Optional[Any]    =   None


if __name__ == "__main__":
      import doctest

      doctest.testmod()




