You are given the heads of two linked lists, list1 and list2, each already sorted in non-decreasing order.
Splice the two lists together into a single sorted list by reusing the existing nodes, and return the head of the merged list.
Each list is given to you as a ListNode ({ val, next }); an empty list is null. Return the head of the combined sorted list.
[1,2,4], [1,3,4][], [][], [0][5], [1,2,4][-3,1], [-2,0,4][1,2,3], []