Given the heads of two singly linked lists list1 and list2, where each list is sorted in non-decreasing order, merge them into a single sorted linked list and return its head. The merged list should be built by reusing the existing nodes, not by creating a separate list of values.
def merge_two_lists(list1, list2):