import random
def lsort(a,b):
    c = []
    ap = 0
    bp = 0
    i = 0
    while i <= len(a)+len(b):
        if a[ap] < b[bp]:
            c.append(a[ap])
            ap+=1
        else:
            c.append(b[bp])
            bp+=1
        i+=1
        if ap == len(a):
            i = len(a)*len(b)
            for it in range(bp,len(b),1):
                c.append(b[0])
        elif bp == len(b):
            i = len(a)*len(b)
            for it in range(ap,len(a),1):
                c.append(a[0])
    print(a,b,c)
    return(c)
n = [[]]
for i in range(10):
    n[0].append([random.randint(1,1000)])
while 2**len(n)< len(n[0]):
    n.append([])
for i in range(len(n)-1):
    m = 0
    while m < len(n[i]):
        try:
            n[i+1].append(lsort(n[i][m],n[i][m+1]))
        except IndexError:
            n[i+1].append(n[i][m])
        m+=1
for i in range(len(n)):
    print(str(n[i]))