




'''simple docstring'''



from typing import Any






class 							_a				:





       '''simple docstring'''






       def __init__(      self,							A  ):







             '''simple docstring'''







             SCREAMING_SNAKE_CASE   :      int    					=						data
             SCREAMING_SNAKE_CASE   :      List[str]    					=						None






class 							_a				:





       '''simple docstring'''






       def __init__(      self  ):







             '''simple docstring'''







             SCREAMING_SNAKE_CASE   :      List[str]    					=						None







       def        UpperCamelCase_							(      self  ):







             '''simple docstring'''







             SCREAMING_SNAKE_CASE   :      int    					=						self.head
             while temp is not None:
                   print(temp.data,							end=' '  )
                   SCREAMING_SNAKE_CASE   :      Optional[int]    					=						temp.next
             print()







       def        UpperCamelCase_							(      self,							A  ):







             '''simple docstring'''







             SCREAMING_SNAKE_CASE   :      Any    					=						Node(A  )
             SCREAMING_SNAKE_CASE   :      Optional[int]    					=						self.head
             SCREAMING_SNAKE_CASE   :      Tuple    					=						new_node







       def        UpperCamelCase_							(      self,							A,							A  ):







             '''simple docstring'''







             if node_data_a == node_data_a:
                   return
             else:
                   SCREAMING_SNAKE_CASE   :      Optional[Any]    					=						self.head
                   while node_a is not None and node_a.data != node_data_a:
                         SCREAMING_SNAKE_CASE   :      Any    					=						node_a.next

                   SCREAMING_SNAKE_CASE   :      Tuple    					=						self.head
                   while node_a is not None and node_a.data != node_data_a:
                         SCREAMING_SNAKE_CASE   :      Dict    					=						node_a.next

                   if node_a is None or node_a is None:
                         return

                   SCREAMING_SNAKE_CASE					,    SCREAMING_SNAKE_CASE   :      Dict    					=						node_a.data, node_a.data


if __name__ == "__main__":
      UpperCamelCase_    	=				LinkedList()
      for i in range(5, 0, -1):
            ll.push(i)

      ll.print_list()

      ll.swap_nodes(1, 4)
      print("After swapping")
      ll.print_list()





'''simple docstring'''

def 							_UpperCamelCase				(   lowerCAmelCase__:					str   )      -> bool:
							return credit_card_number.startswith(('34', '35', '37', '4', '5', '6')   )




def 							_UpperCamelCase				(   lowerCAmelCase__:					str   )      -> bool:
							SCREAMING_SNAKE_CASE_				=				credit_card_number
							SCREAMING_SNAKE_CASE_				=				0
							SCREAMING_SNAKE_CASE_				=				len(lowerCAmelCase__   ) - 2
							for i in range(lowerCAmelCase__		,-1		,-2   ):
														#  double the value of every second digit
														SCREAMING_SNAKE_CASE_				=				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 %= 10
																					digit += 1
														SCREAMING_SNAKE_CASE_				=				cc_number[:i] + str(lowerCAmelCase__   ) + cc_number[i + 1 :]
														total += digit

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

							return total % 10 == 0




def 							_UpperCamelCase				(   lowerCAmelCase__:					str   )      -> bool:
							SCREAMING_SNAKE_CASE_				=				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 13 <= len(lowerCAmelCase__   ) <= 16:
														print(F"""{error_message} of its length."""   )
														return False

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

							if not luhn_validation(lowerCAmelCase__   ):
														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")





