def BubbleSort(A):
    for i in range(len(A)):
        for j in range(len(A)-1,i,-1):  
            
            if A[j][1] < A[j-1][1]:
                # リストの要素の文字列は2次元配列として記憶される
                A[j],A[j-1] = A[j-1],A[j]
    return A

def SelectionSort(A):
    for i in range(len(A)):
        mini = i
        for j in range(i,len(A)):
            if A[j][1] < A[mini][1]:
                mini = j
        A[i],A[mini] = A[mini],A[i]
    return A


N = int(input())
# example for input to array : H4 C9 S4 D2 C3 (from cards)
array = [i for i in input().split()]
array_cp = list(array)

result_bs = BubbleSort(array)
print(*result_bs)
print('Stable') # Bubble sort is stable

result_ss = SelectionSort(array_cp)
print(*result_ss)
if result_ss == result_bs:
    print('Stable')
else:
    print('Not stable') def BubbleSort(A):
    for i in range(len(A)):
        for j in range(len(A)-1,i,-1):  
            
            if A[j][1] < A[j-1][1]:
                # リストの要素の文字列は2次元配列として記憶される
                A[j],A[j-1] = A[j-1],A[j]
    return A BubbleSort for i in range(len(A)):
        for j in range(len(A)-1,i,-1):  
            
            if A[j][1] < A[j-1][1]:
                # リストの要素の文字列は2次元配列として記憶される
                A[j],A[j-1] = A[j-1],A[j]
     i range(len(A)) range len(A) len A for j in range(len(A)-1,i,-1):  
            
            if A[j][1] < A[j-1][1]:
                # リストの要素の文字列は2次元配列として記憶される
                A[j],A[j-1] = A[j-1],A[j]
     j range(len(A)-1,i,-1) range len(A)-1 len(A) len A 1 i -1 if A[j][1] < A[j-1][1]:
                # リストの要素の文字列は2次元配列として記憶される
                A[j],A[j-1] = A[j-1],A[j]
     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 return A A A A def SelectionSort(A):
    for i in range(len(A)):
        mini = i
        for j in range(i,len(A)):
            if A[j][1] < A[mini][1]:
                mini = j
        A[i],A[mini] = A[mini],A[i]
    return A SelectionSort for i in range(len(A)):
        mini = i
        for j in range(i,len(A)):
            if A[j][1] < A[mini][1]:
                mini = j
        A[i],A[mini] = A[mini],A[i]
     i range(len(A)) range len(A) len A mini = i mini i for j in range(i,len(A)):
            if A[j][1] < A[mini][1]:
                mini = j
         j range(i,len(A)) range i len(A) len A if A[j][1] < A[mini][1]:
                mini = j
         A[j][1] < A[mini][1] A[j][1] [j] A j 1 A[mini][1] [mini] A mini 1 mini = j mini j A[i],A[mini] = A[mini],A[i] A[i] A i A[mini] A mini A[mini] A mini A[i] A i return A A A A N = int(input()) N int(input()) int input() input i for i in input().split() for i in input().split() i input().split() ().split () input split for i in input().split() i array = [i for i in input().split()] array [i for i in input().split()] array_cp = list(array) array_cp list(array) list array result_bs = BubbleSort(array) result_bs BubbleSort(array) BubbleSort array print(*result_bs) print *result_bs result_bs print('Stable') print 'Stable' result_ss = SelectionSort(array_cp) result_ss SelectionSort(array_cp) SelectionSort array_cp print(*result_ss) print *result_ss result_ss if result_ss == result_bs:
    print('Stable')
else:
    print('Not stable') result_ss == result_bs result_ss result_bs print('Stable') print 'Stable' print('Not stable') print 'Not stable' def SelectionSort(A):
    for i in range(len(A)):
        mini = i
        for j in range(i,len(A)):
            if A[j][1] < A[mini][1]:
                mini = j
        A[i],A[mini] = A[mini],A[i]
    return A def SelectionSort(A):
    for i in range(len(A)):
        mini = i
        for j in range(i,len(A)):
            if A[j][1] < A[mini][1]:
                mini = j
        A[i],A[mini] = A[mini],A[i]
    return A SelectionSort result_ss = SelectionSort(array_cp) SelectionSort(array_cp) result_ss array = [i for i in input().split()] [i for i in input().split()] array def BubbleSort(A):
    for i in range(len(A)):
        for j in range(len(A)-1,i,-1):  
            
            if A[j][1] < A[j-1][1]:
                # リストの要素の文字列は2次元配列として記憶される
                A[j],A[j-1] = A[j-1],A[j]
    return A def BubbleSort(A):
    for i in range(len(A)):
        for j in range(len(A)-1,i,-1):  
            
            if A[j][1] < A[j-1][1]:
                # リストの要素の文字列は2次元配列として記憶される
                A[j],A[j-1] = A[j-1],A[j]
    return A BubbleSort array_cp = list(array) list(array) array_cp result_bs = BubbleSort(array) BubbleSort(array) result_bs N = int(input()) int(input()) N
def BubbleSort(A):
    for i in range(len(A)):
        for j in range(len(A)-1,i,-1):  
            
            if A[j][1] < A[j-1][1]:
                # リストの要素の文字列は2次元配列として記憶される
                A[j],A[j-1] = A[j-1],A[j]
    return A

def SelectionSort(A):
    for i in range(len(A)):
        mini = i
        for j in range(i,len(A)):
            if A[j][1] < A[mini][1]:
                mini = j
        A[i],A[mini] = A[mini],A[i]
    return A


N = int(input())
# example for input to array : H4 C9 S4 D2 C3 (from cards)
array = [i for i in input().split()]
array_cp = list(array)

result_bs = BubbleSort(array)
print(*result_bs)
print('Stable') # Bubble sort is stable

result_ss = SelectionSort(array_cp)
print(*result_ss)
if result_ss == result_bs:
    print('Stable')
else:
    print('Not stable')
