# تعريف العقدة في القائمة المترابطة
class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

# دالة إزالة التكرارات
def deleteDuplicates(head: ListNode) -> ListNode:
    current = head  # البدء من رأس القائمة
    while current and current.next:  # التأكد من عدم تجاوز نهاية القائمة
        if current.val == current.next.val:
            current.next = current.next.next  # تجاوز العقدة المكررة
        else:
            current = current.next  # الانتقال للعقدة التالية
    return head

# دالة لطباعة القائمة المترابطة
def printList(head: ListNode):
    current = head
    while current:
        print(current.val, end=" -> ")
        current = current.next
    print("None")

# دالة لإنشاء قائمة مترابطة من قائمة أرقام
def createLinkedList(arr):
    if not arr:
        return None
    head = ListNode(arr[0])
    current = head
    for val in arr[1:]:
        current.next = ListNode(val)
        current = current.next
    return head

# قراءة إدخال المستخدم مع التحقق
while True:
    user_input = input("أدخل القيم (مفصولة بمسافات، على سبيل المثال: 1 1 2 3 3): ")
    try:
        values = list(map(int, user_input.split()))
        break  # إذا كان الإدخال صحيحًا، نخرج من الحلقة
    except ValueError:
        print("يرجى إدخال الأرقام فقط مفصولة بمسافات بدون أقواس أو فواصل. حاول مرة أخرى.")

# إنشاء القائمة المترابطة
head = createLinkedList(values)

# إزالة التكرارات
head = deleteDuplicates(head)

# طباعة القائمة بعد إزالة التكرارات
print("قائمة بعد إزالة التكرارات:")
printList(head)
