ListNode* merge(ListNode* l1, ListNode* l2){ auto *res = newListNode(-1); auto *head = res; while (l1 && l2) { bool f = l1 -> val < l2 -> val; res = res -> next = f ? l1 : l2; if (f) l1 = l1 -> next; else l2 = l2 -> next; } auto *t = l1 ? l1 : l2; while (t) { res = res -> next = t; t = t -> next; } return head -> next; }