






'''simple docstring'''
def  _a(  UpperCamelCase__				:						str							):




      '''simple docstring'''






      return credit_card_number.startswith(('''34''', '''35''', '''37''', '''4''', '''5''', '''6''')							)





def  _a(  UpperCamelCase__				:						str							):




      '''simple docstring'''






      SCREAMING_SNAKE_CASE__     :				Dict							 =credit_card_number
      SCREAMING_SNAKE_CASE__     :				int							 =0
      SCREAMING_SNAKE_CASE__     :				Union[str, Any]							 =len(__a							) - 2
      for i in range(__a,	-1,	-2							):
            #  double the value of every second digit
            SCREAMING_SNAKE_CASE__     :				List[str]							 =int(cc_number[i]							)
            digit *= 2
            # If doubling of a number results in a two digit number
            # i.e greater than 9(e.g., 6 × 2 = 12),
            # then add the digits of the product (e.g., 12: 1 + 2 = 3, 15: 1 + 5 = 6),
            # to get a single digit number.
            if digit > 9:
                  digit %= 1_0
                  digit += 1
            SCREAMING_SNAKE_CASE__     :				Optional[int]							 =cc_number[:i] + str(__a							) + cc_number[i + 1 :]
            total += digit

      # Sum up the remaining digits
      for i in range(len(__a							) - 1,	-1,	-2							):
            total += int(cc_number[i]							)

      return total % 1_0 == 0





def  _a(  UpperCamelCase__				:						str							):




      '''simple docstring'''






      SCREAMING_SNAKE_CASE__     :				Union[str, Any]							 =f"{credit_card_number} is an invalid credit card number because"
      if not credit_card_number.isdigit():
            print(f"{error_message} it has nonnumerical characters."							)
            return False

      if not 1_3 <= len(__a							) <= 1_6:
            print(f"{error_message} of its length."							)
            return False

      if not validate_initial_digits(__a							):
            print(f"{error_message} of its first two digits."							)
            return False

      if not luhn_validation(__a							):
            print(f"{error_message} it fails the Luhn check."							)
            return False

      print(f"{credit_card_number} is a valid credit card number."							)
      return True


if __name__ == "__main__":
  import doctest

  doctest.testmod()
  validate_credit_card_number('4111111111111111')
  validate_credit_card_number('32323')







'''simple docstring'''
class      __SCREAMING_SNAKE_CASE      :




 def __init__(      self	:							List[Any]					,      __lowercase	:							int      )	->						None:
       SCREAMING_SNAKE_CASE__     :				Union[str, Any]									=size
       SCREAMING_SNAKE_CASE__     :				List[Any]									=[0] * size
       SCREAMING_SNAKE_CASE__     :				str									=[0] * size




 @staticmethod
 def      __magic_name__	(      __lowercase	:							int      )	->						int:
       return index | (index + 1)




 @staticmethod
 def      __magic_name__	(      __lowercase	:							int      )	->						int:
       return (index & (index + 1)) - 1




 def      __magic_name__	(      self	:							Dict					,      __lowercase	:							int					,      __lowercase	:							int      )	->						None:
       SCREAMING_SNAKE_CASE__     :				List[str]									=value
       while index < self.size:
             SCREAMING_SNAKE_CASE__     :				Any									=self.get_prev(__lowercase      ) + 1
             if current_left_border == index:
                   SCREAMING_SNAKE_CASE__     :				List[str]									=value
             else:
                   SCREAMING_SNAKE_CASE__     :				str									=max(__lowercase					,      __lowercase					,      __lowercase      )
             SCREAMING_SNAKE_CASE__     :				Optional[Any]									=self.get_next(__lowercase      )




 def      __magic_name__	(      self	:							Optional[int]					,      __lowercase	:							int					,      __lowercase	:							int      )	->						int:
       right -= 1  # Because of right is exclusive
       SCREAMING_SNAKE_CASE__     :				str									=0
       while left <= right:
             SCREAMING_SNAKE_CASE__     :				Optional[Any]									=self.get_prev(__lowercase      )
             if left <= current_left:
                   SCREAMING_SNAKE_CASE__     :				List[Any]									=max(__lowercase					,      self.tree[right]      )
                   SCREAMING_SNAKE_CASE__     :				Any									=current_left
             else:
                   SCREAMING_SNAKE_CASE__     :				Optional[Any]									=max(__lowercase					,      self.arr[right]      )
                   right -= 1
       return result


if __name__ == "__main__":
  import doctest

  doctest.testmod()