# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# @param {ListNode[]} lists
# @return {ListNode}
def mergeKLists(self, lists):
heap = []
for node in lists:
if node:
heap.append((node.val, node))
heapq.heapify(heap)
head = ListNode(0); temp = head
while heap:
pop = heapq.heappop(heap)
temp.next = ListNode(pop[0])
temp = temp.next
if pop[1].next:
heapq.heappush(heap,(pop[1].next.val,pop[1].next))
return head.next