



import math







def       lowerCamelCase_  (    _a       :						int    ):



    '''simple docstring'''




    if 1 < number < 4:
        # 2 and 3 are primes
        return True
    elif number < 2 or number % 2 == 0 or number % 3 == 0:
        # Negatives, 0, 1, all even numbers, all multiples of 3 are not primes
        return False

    # All primes number are in format of 6k +/- 1
    for i in range(5   ,		int(math.sqrt(_a    ) + 1    )   ,		6    ):
        if number % i == 0 or number % (i + 2) == 0:
            return False
    return True







def       lowerCamelCase_  (    _a       :						int = 6008_5147_5143    ):



    '''simple docstring'''




    try:
        UpperCAmelCase_     :       str  		=					int(_a    )
    except (TypeError, ValueError):
        raise TypeError("""Parameter n must be int or castable to int."""    )
    if n <= 0:
        raise ValueError("""Parameter n must be greater than or equal to one."""    )
    UpperCAmelCase_     :       Optional[int]  		=					0
    if is_prime(_a    ):
        return n
    while n % 2 == 0:
        n //= 2
    if is_prime(_a    ):
        return n
    for i in range(3   ,		int(math.sqrt(_a    )    ) + 1   ,		2    ):
        if n % i == 0:
            if is_prime(n // i    ):
                UpperCAmelCase_     :       Optional[int]  		=					n // i
                break
            elif is_prime(_a    ):
                UpperCAmelCase_     :       str  		=					i
    return max_number


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


class 		__magic_name__				:


  """simple docstring"""





  class 		__magic_name__				:


    """simple docstring"""





    _UpperCamelCase						 = "_prev", "_data", "_next"


    def __init__(					self	,		a__	,		a__	,		a__		):
      _lowerCamelCase      =						link_p
      _lowerCamelCase      =						element
      _lowerCamelCase      =						link_n


    def     _UpperCAmelCase  (					self		):
      return (
          f''' Prev -> {self._prev is not None}, Next -> {self._next is not None}'''
      )







  def __init__(					self		):
    _lowerCamelCase      =						self._Node(a__	,		a__	,		a__		)
    _lowerCamelCase      =						self._Node(a__	,		a__	,		a__		)
    _lowerCamelCase      =						self._trailer
    _lowerCamelCase      =						self._header
    _lowerCamelCase      =						0


  def __len__(					self		):
    return self._size


  def     _UpperCAmelCase  (					self		):
    return self.__len__() == 0


  def     _UpperCAmelCase  (					self	,		a__	,		a__	,		a__		):
    # Create new_node by setting it's prev.link -> header
    # setting it's next.link -> trailer
    _lowerCamelCase      =						self._Node(a__	,		a__	,		a__		)
    _lowerCamelCase      =						new_node
    _lowerCamelCase      =						new_node
    self._size += 1
    return self


  def     _UpperCAmelCase  (					self	,		a__		):
    _lowerCamelCase      =						node._prev
    _lowerCamelCase      =						node._next

    _lowerCamelCase      =						successor
    _lowerCamelCase      =						predecessor
    self._size -= 1
    _lowerCamelCase      =						node._data
    _lowerCamelCase      =						_lowerCamelCase      =						_lowerCamelCase      =						None
    del node
    return temp







class 		__magic_name__				( _DoublyLinkedBase					):


  """simple docstring"""





  def     _UpperCAmelCase  (					self		):
    if self.is_empty():
      raise Exception('''List is empty'''		)
    return self._header._next._data


  def     _UpperCAmelCase  (					self		):
    if self.is_empty():
      raise Exception('''List is empty'''		)
    return self._trailer._prev._data


  def     _UpperCAmelCase  (					self	,		a__		):
    return self._insert(self._header	,		a__	,		self._header._next		)


  def     _UpperCAmelCase  (					self	,		a__		):
    return self._insert(self._trailer._prev	,		a__	,		self._trailer		)


  def     _UpperCAmelCase  (					self		):
    if self.is_empty():
      raise IndexError('''remove_first from empty list'''		)
    return self._delete(self._header._next		)


  def     _UpperCAmelCase  (					self		):
    if self.is_empty():
      raise IndexError('''remove_first from empty list'''		)
    return self._delete(self._trailer._prev		)




