\begin{algorithm}
\caption{Merge Sorted Lists}
\begin{algorithmic}
\INPUT $k$ sorted lists with $n$ elements in total
\OUTPUT A sorted list of size $n$
\STATE extract the first element from each sorted list to form $A[1..k]$
\STATE $A.\text{heap-size} = k$
\STATE \CALL{BuildMinHeap}{$A$}
\STATE let $L$ be the result list
\WHILE {$A.\text{heap-size} \ne 0$}
\STATE $x =$ \CALL{HeapExtractMin}{$A$}
\STATE let $l$ be the list which $x$ came from
\IF{$l$ \textbf{is} not empty}
\STATE extrace the first element $y$ from $l$
\STATE \CALL{MinHeapInsert}{$A, y$}
\ENDIF
\STATE append $x$ to $L$
\ENDWHILE
\RETURN $L$
\end{algorithmic}
\end{algorithm}