def bubble(A):
    #标记是否需要继续冒泡
    flag =True;
    n=len(A)
    i=0
    while flag:
        flag=False
        for j in range(n-1,i,-1):
           if A[j][1]<A[j-1][1]:
               A[j],A[j-1]=A[j-1],A[j]
               flag=True
        i+=1
 
 
#选择排序法
def selection(A):
    n=len(A)
    for i in range(n):
        minj=i
        for j in range(i,n):
            if A[j][1]<A[minj][1]:
                minj=j
        if i!=minj:
            A[i],A[minj]=A[minj],A[i]
             
   
           
n=int(input())
ss=[x for x in input().split()]     
ss2=ss.copy()
 
 
bubble(ss)
for i in range(len(ss)-1):
    print(ss[i],end=' ')
print(ss[-1])
print('Stable')
    
 
selection(ss2)
for i in range(len(ss2)-1):
    print(ss2[i],end=' ')
print(ss2[-1])
if ss==ss2:
    print('Stable')
else:
    print('Not stable') def bubble(A):
    #标记是否需要继续冒泡
    flag =True;
    n=len(A)
    i=0
    while flag:
        flag=False
        for j in range(n-1,i,-1):
           if A[j][1]<A[j-1][1]:
               A[j],A[j-1]=A[j-1],A[j]
               flag=True
        i+=1
 
 
#选择排序法 bubble flag =True flag True n=len(A) n len(A) len A i=0 i 0 while flag:
        flag=False
        for j in range(n-1,i,-1):
           if A[j][1]<A[j-1][1]:
               A[j],A[j-1]=A[j-1],A[j]
               flag=True
        i+=1
 
 
#选择排序法 flag flag=False flag False for j in range(n-1,i,-1):
           if A[j][1]<A[j-1][1]:
               A[j],A[j-1]=A[j-1],A[j]
               flag=True
         j range(n-1,i,-1) range n-1 n 1 i -1 if A[j][1]<A[j-1][1]:
               A[j],A[j-1]=A[j-1],A[j]
               flag=True
         A[j][1]<A[j-1][1] A[j][1] [j] A j 1 A[j-1][1] [j-1] A j-1 j 1 1 A[j],A[j-1]=A[j-1],A[j] A[j] A j A[j-1] A j-1 j 1 A[j-1] A j-1 j 1 A[j] A j flag=True flag True i+=1 i 1 A A def selection(A):
    n=len(A)
    for i in range(n):
        minj=i
        for j in range(i,n):
            if A[j][1]<A[minj][1]:
                minj=j
        if i!=minj:
            A[i],A[minj]=A[minj],A[i]
             
   
            selection n=len(A) n len(A) len A for i in range(n):
        minj=i
        for j in range(i,n):
            if A[j][1]<A[minj][1]:
                minj=j
        if i!=minj:
            A[i],A[minj]=A[minj],A[i]
             
   
            i range(n) range n minj=i minj i for j in range(i,n):
            if A[j][1]<A[minj][1]:
                minj=j
         j range(i,n) range i n if A[j][1]<A[minj][1]:
                minj=j
         A[j][1]<A[minj][1] A[j][1] [j] A j 1 A[minj][1] [minj] A minj 1 minj=j minj j if i!=minj:
            A[i],A[minj]=A[minj],A[i]
             
   
            i!=minj i minj A[i],A[minj]=A[minj],A[i] A[i] A i A[minj] A minj A[minj] A minj A[i] A i A A n=int(input()) n int(input()) int input() input x for x in input().split() for x in input().split() x input().split() ().split () input split for x in input().split() x ss=[x for x in input().split()] ss [x for x in input().split()] ss2=ss.copy() ss2 ss.copy() ss.copy ss copy bubble(ss) bubble ss for i in range(len(ss)-1):
    print(ss[i],end=' ') i range(len(ss)-1) range len(ss)-1 len(ss) len ss 1 print(ss[i],end=' ') print ss[i] ss i end=' ' end ' ' print(ss[-1]) print ss[-1] ss -1 print('Stable') print 'Stable' selection(ss2) selection ss2 for i in range(len(ss2)-1):
    print(ss2[i],end=' ') i range(len(ss2)-1) range len(ss2)-1 len(ss2) len ss2 1 print(ss2[i],end=' ') print ss2[i] ss2 i end=' ' end ' ' print(ss2[-1]) print ss2[-1] ss2 -1 if ss==ss2:
    print('Stable')
else:
    print('Not stable') ss==ss2 ss ss2 print('Stable') print 'Stable' print('Not stable') print 'Not stable' def selection(A):
    n=len(A)
    for i in range(n):
        minj=i
        for j in range(i,n):
            if A[j][1]<A[minj][1]:
                minj=j
        if i!=minj:
            A[i],A[minj]=A[minj],A[i]
             
   
            def selection(A):
    n=len(A)
    for i in range(n):
        minj=i
        for j in range(i,n):
            if A[j][1]<A[minj][1]:
                minj=j
        if i!=minj:
            A[i],A[minj]=A[minj],A[i]
             
   
            selection ss2=ss.copy() ss.copy() ss2 ss=[x for x in input().split()] [x for x in input().split()] ss def bubble(A):
    #标记是否需要继续冒泡
    flag =True;
    n=len(A)
    i=0
    while flag:
        flag=False
        for j in range(n-1,i,-1):
           if A[j][1]<A[j-1][1]:
               A[j],A[j-1]=A[j-1],A[j]
               flag=True
        i+=1
 
 
#选择排序法 def bubble(A):
    #标记是否需要继续冒泡
    flag =True;
    n=len(A)
    i=0
    while flag:
        flag=False
        for j in range(n-1,i,-1):
           if A[j][1]<A[j-1][1]:
               A[j],A[j-1]=A[j-1],A[j]
               flag=True
        i+=1
 
 
#选择排序法 bubble n=int(input()) int(input()) n
def bubble(A):
    #标记是否需要继续冒泡
    flag =True;
    n=len(A)
    i=0
    while flag:
        flag=False
        for j in range(n-1,i,-1):
           if A[j][1]<A[j-1][1]:
               A[j],A[j-1]=A[j-1],A[j]
               flag=True
        i+=1
 
 
#选择排序法
def selection(A):
    n=len(A)
    for i in range(n):
        minj=i
        for j in range(i,n):
            if A[j][1]<A[minj][1]:
                minj=j
        if i!=minj:
            A[i],A[minj]=A[minj],A[i]
             
   
           
n=int(input())
ss=[x for x in input().split()]     
ss2=ss.copy()
 
 
bubble(ss)
for i in range(len(ss)-1):
    print(ss[i],end=' ')
print(ss[-1])
print('Stable')
    
 
selection(ss2)
for i in range(len(ss2)-1):
    print(ss2[i],end=' ')
print(ss2[-1])
if ss==ss2:
    print('Stable')
else:
    print('Not stable')
