#!/usr/bin/env python
# from http://stackoverflow.com/a/19475021/
import heapq
def addtoheap(h, it):
try:
heapq.heappush(h, (next(it), it))
except StopIteration:
pass
def mergek(*lists):
h = []
for it in map(iter, lists):
addtoheap(h, it)
while h:
min_, it = heapq.heappop(h)
addtoheap(h, it)
yield min_
for x in mergek([1, 3, 5], [2, 4, 6], [7, 8, 9], [10]):
print(x)
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgZnJvbSBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xOTQ3NTAyMS8KaW1wb3J0IGhlYXBxCgpkZWYgYWRkdG9oZWFwKGgsIGl0KToKICAgIHRyeToKICAgICAgICBoZWFwcS5oZWFwcHVzaChoLCAobmV4dChpdCksIGl0KSkKICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgogICAgICAgIHBhc3MKCmRlZiBtZXJnZWsoKmxpc3RzKToKICAgIGggPSBbXQogICAgZm9yIGl0IGluIG1hcChpdGVyLCBsaXN0cyk6CiAgICAgICAgYWRkdG9oZWFwKGgsIGl0KQogICAgd2hpbGUgaDoKICAgICAgICBtaW5fLCBpdCA9IGhlYXBxLmhlYXBwb3AoaCkKICAgICAgICBhZGR0b2hlYXAoaCwgaXQpCiAgICAgICAgeWllbGQgbWluXwoKZm9yIHggaW4gbWVyZ2VrKFsxLCAzLCA1XSwgWzIsIDQsIDZdLCBbNywgOCwgOV0sIFsxMF0pOgogICAgcHJpbnQoeCkK