import heapq
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def mergeKLists(self, lists: List[ListNode]) -> ListNode:
if not lists:
return None
h = []
for i, l in enumerate(lists):
if l:
heapq.heappush(h, (l.val, i, l))
dummy = ListNode()
head = dummy
while h:
minEl, i, l = heapq.heappop(h)
dummy.next = ListNode(minEl)
dummy = dummy.next
l = l.next
if l:
heapq.heappush(h, (l.val, i, l))
return head.next