86. Partition List
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:
        dummy = ListNode(-1)
        greaterDummy = ListNode(-1)
        current = head
        c2 = dummy
        c3 = greaterDummy
        while current:
            if current.val < x:
                c2.next = current
                c2 = c2.next
            else:
                c3.next = current
                c3 = c3.next
            current = current.next
        c2.next = greaterDummy.next
        c3.next = None
        return dummy.next