'''
I. 632.
Juhász Nándor
Gyöngyös, Vak Bottyán János Katolikus Műszaki és Közgazdasági Technikum, Gimnázium és Kollégium 10. o. t.
'''

def get_max(l, c_size):    # a szamsorban talalhato legnagyobb szam indexenek megszerzese
    max_i = 0
    for i in range(0, c_size):
        if l[i] > l[max_i]:
            max_i = i
    return max_i

def sort(l, n):    
    current_size = n    # a szamsor 'rendezetlen' resze, ez csokken ahogy rendezodnek a szamok
    output(l, n)

    while current_size > 0:    # addig futtatjuk a ciklust, amig nullanal nagyobb a szamsor rendezetlen resze
        max_i = get_max(l, current_size)    # megszerezzuk a szamsor legnagyobb szamanak indexet

        if max_i != current_size-1:    # ha a legnagyobb szam nincs a helyen
            if max_i != 0:    # ha a legnagyobb szam nem a szamsor elejen van
                l[0:max_i+1] = l[0:max_i+1][::-1]    # a szamsor elejetol a legnagyobb szamig megforditjuk a szamsort, ezzel elore kerul a legnagyobb szam
                output(l, n)


            l[0:current_size] = l[0:current_size][::-1]    # megforditjuk az egesz szamsort (minusz a mar elrendezett szamok), ezzel az aktualis legnagyobb szam a helyere rendezodik
            output(l, n)
            
        current_size -= 1
     
def output(l, n):   # kiirja a szamsor jelenlegi sorrendjet
    for i in range(n):
        print(l[i], end=' ')
    print()

def main():
    n = int(input())
    l = [int(x) for x in (input().split(sep=' '))]
    sort(l, n)

main()