def val(a):
    return int(a[1:])


def bubble(lst,n):
    for i in range(n):
        for j in range(n-1,i,-1):
            if val(lst[j])<val(lst[j-1]):
                lst[j],lst[j-1]=lst[j-1],lst[j]
    return lst

def selection(lst,n):
    for i in range(n):
        minj=i
        for j in range(i,n):
            if val(lst[j])<val(lst[minj]):
                minj=j
        if i!=minj:
            lst[minj],lst[i]=lst[i],lst[minj]
    return lst

n=int(input())
lst=input().split()
lstc=lst[:]
blst=bubble(lstc,n)
lstc=lst[:]
slst=selection(lstc,n)


print(" ".join(blst))
print("Stable") #バブルソートは安定ソート
print(" ".join(slst))
if slst==blst : print("Stable")
else : print("Not stable") def val(a):
    return int(a[1:]) val return int(a[1:]) int(a[1:]) int a[1:] a 1: 1 a a def bubble(lst,n):
    for i in range(n):
        for j in range(n-1,i,-1):
            if val(lst[j])<val(lst[j-1]):
                lst[j],lst[j-1]=lst[j-1],lst[j]
    return lst bubble for i in range(n):
        for j in range(n-1,i,-1):
            if val(lst[j])<val(lst[j-1]):
                lst[j],lst[j-1]=lst[j-1],lst[j]
     i range(n) range n for j in range(n-1,i,-1):
            if val(lst[j])<val(lst[j-1]):
                lst[j],lst[j-1]=lst[j-1],lst[j]
     j range(n-1,i,-1) range n-1 n 1 i -1 if val(lst[j])<val(lst[j-1]):
                lst[j],lst[j-1]=lst[j-1],lst[j]
     val(lst[j])<val(lst[j-1]) val(lst[j]) val lst[j] lst j val(lst[j-1]) val lst[j-1] lst j-1 j 1 lst[j],lst[j-1]=lst[j-1],lst[j] lst[j] lst j lst[j-1] lst j-1 j 1 lst[j-1] lst j-1 j 1 lst[j] lst j return lst lst lst lst n n def selection(lst,n):
    for i in range(n):
        minj=i
        for j in range(i,n):
            if val(lst[j])<val(lst[minj]):
                minj=j
        if i!=minj:
            lst[minj],lst[i]=lst[i],lst[minj]
    return lst selection for i in range(n):
        minj=i
        for j in range(i,n):
            if val(lst[j])<val(lst[minj]):
                minj=j
        if i!=minj:
            lst[minj],lst[i]=lst[i],lst[minj]
     i range(n) range n minj=i minj i for j in range(i,n):
            if val(lst[j])<val(lst[minj]):
                minj=j
         j range(i,n) range i n if val(lst[j])<val(lst[minj]):
                minj=j
         val(lst[j])<val(lst[minj]) val(lst[j]) val lst[j] lst j val(lst[minj]) val lst[minj] lst minj minj=j minj j if i!=minj:
            lst[minj],lst[i]=lst[i],lst[minj]
     i!=minj i minj lst[minj],lst[i]=lst[i],lst[minj] lst[minj] lst minj lst[i] lst i lst[i] lst i lst[minj] lst minj return lst lst lst lst n n n=int(input()) n int(input()) int input() input lst=input().split() lst input().split() ().split () input split lstc=lst[:] lstc lst[:] lst : blst=bubble(lstc,n) blst bubble(lstc,n) bubble lstc n lstc=lst[:] lstc lst[:] lst : slst=selection(lstc,n) slst selection(lstc,n) selection lstc n print(" ".join(blst)) print " ".join(blst) " ".join " " join blst print("Stable") print "Stable" print(" ".join(slst)) print " ".join(slst) " ".join " " join slst if slst==blst : print("Stable")
else : print("Not stable") slst==blst slst blst lstc=lst[:] lst[:] lstc def selection(lst,n):
    for i in range(n):
        minj=i
        for j in range(i,n):
            if val(lst[j])<val(lst[minj]):
                minj=j
        if i!=minj:
            lst[minj],lst[i]=lst[i],lst[minj]
    return lst def selection(lst,n):
    for i in range(n):
        minj=i
        for j in range(i,n):
            if val(lst[j])<val(lst[minj]):
                minj=j
        if i!=minj:
            lst[minj],lst[i]=lst[i],lst[minj]
    return lst selection lst=input().split() input().split() lst lstc=lst[:] lst[:] lstc blst=bubble(lstc,n) bubble(lstc,n) blst slst=selection(lstc,n) selection(lstc,n) slst def bubble(lst,n):
    for i in range(n):
        for j in range(n-1,i,-1):
            if val(lst[j])<val(lst[j-1]):
                lst[j],lst[j-1]=lst[j-1],lst[j]
    return lst def bubble(lst,n):
    for i in range(n):
        for j in range(n-1,i,-1):
            if val(lst[j])<val(lst[j-1]):
                lst[j],lst[j-1]=lst[j-1],lst[j]
    return lst bubble def val(a):
    return int(a[1:]) def val(a):
    return int(a[1:]) val n=int(input()) int(input()) n
def val(a):
    return int(a[1:])


def bubble(lst,n):
    for i in range(n):
        for j in range(n-1,i,-1):
            if val(lst[j])<val(lst[j-1]):
                lst[j],lst[j-1]=lst[j-1],lst[j]
    return lst

def selection(lst,n):
    for i in range(n):
        minj=i
        for j in range(i,n):
            if val(lst[j])<val(lst[minj]):
                minj=j
        if i!=minj:
            lst[minj],lst[i]=lst[i],lst[minj]
    return lst

n=int(input())
lst=input().split()
lstc=lst[:]
blst=bubble(lstc,n)
lstc=lst[:]
slst=selection(lstc,n)


print(" ".join(blst))
print("Stable") #バブルソートは安定ソート
print(" ".join(slst))
if slst==blst : print("Stable")
else : print("Not stable")
