#include <iostream>
#include <algorithm>
#include <iomanip>
#include <cmath>
#include <vector>
#include <sstream>
#include <string>
#include <cstdio>
#include <array>

using namespace std;

//???????????°??????TEST????????????????????¬???????????????????????????????????¢????????????
//#define TEST //*******************************************************************************************************************************************

//?????????????????¨??§?????\????????????????????????????????°?????????????¨???????????????????dout???????????????????????§???????????¬??????????????????????????????????????????
#ifdef TEST
    #define dout cout
#else
    stringstream dummy; //???????????°??????dout?????????????????????????????????
    #define dout dummy
#endif


int main(void) {
    int NumOfData;
    cin >> NumOfData;
    
    vector<string> a;
    for(int i=0; i<NumOfData; i++) {
        string str;
        cin >> str;
        a.push_back(str);
    }
    
    vector<string> a_original(a);
    

    
    string suitOrder_original[10]; //?????°???0???9??????????????????????????????????????????????????????????????????
    for(int i=0; i<10; i++) {
        
        //??????????????¨??????????????°??????i????????????????????????????????????suitOrder???????????????????????????
        for(int k=0; k<NumOfData; k++) {
            if( a[k][1]-'0' == i ) {
                suitOrder_original[i] += a[k][0];
            }
        }
        
        dout << "suitOrder_original[" << i << "] = " << suitOrder_original[i] << endl;
    }
    dout << endl;
    
    
    
    //display a[]
    for(int k=0; k<NumOfData; k++) {
        if(k==0) dout << a[k];
        else dout << " " << a[k];
    }
    dout << " <--- a[]" << endl;
    
    //display a_original[]
    for(int k=0; k<NumOfData; k++) {
        if(k==0) dout << a_original[k];
        else dout << " " << a_original[k];
    }
    dout << " <--- a_original[]" << endl;
    

    dout << endl;
    //Bubble Sort a[]
    for(int i=0; i<NumOfData; i++) {
        
        //display a[]
        for(int k=0; k<NumOfData; k++) {
            if(k==i) dout << "|";
            if(k==0) dout << a[k];
            else dout << " " << a[k];
        }
        dout << " : i = " << i << endl;
        
        //??????????????£??\??????2???????£??????????????????????
        for(int j=NumOfData-1; j>i; j--) {
            if( a[j-1][1] > a[j][1]) {
                string tmp;
                tmp = a[j-1];
                a[j-1] = a[j];
                a[j] = tmp;
            }
        }
        
    }

    //display a[]
    for(int k=0; k<NumOfData; k++) {
        if(k==0) cout << a[k];
        else cout << " " << a[k];
    }
    dout << " <--- a[] sorted by Bubble Sort" << endl;
    cout << endl;
    

    //check suit order
    string suitOrder_sortedByBubble[10]; //????????????????????????????????????????????????????????????
    for(int i=0; i<10; i++) {
        //??????????????¨??????????????°??????i????????????????????????????????????suitOrder???????????????????????????
        for(int k=0; k<NumOfData; k++) {
            if( a[k][1]-'0' == i ) {
                suitOrder_sortedByBubble[i] += a[k][0];
            }
        }
        
        dout << "suitOrder_sortedByBubble[" << i << "] = " << suitOrder_sortedByBubble[i] << endl;
    }
    dout << endl;
    
    bool isStable = true;
    for(int i=0; i<10; i++) {
        if( suitOrder_original[i] != suitOrder_sortedByBubble[i] ) {
            isStable = false;
            break;
        }
    }
    
    cout << (isStable ? "Stable" : "Not stable") << endl;
    
    
    
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    dout << "\n///////////////////////////////////////////////////////////////////////////////////////////\n\n";
    
    //reset a[]
    a = a_original;

    //Selection Sort a[]
    for(int i=0; i<NumOfData; i++) {
        
        //display a[]
        for(int k=0; k<NumOfData; k++) {
            if(k==i) dout << "|";
            if(k==0) dout << a[k];
            else dout << " " << a[k];
        }
        dout << " : i = " << i << endl;
        
        //i?????????????????????i???????°?????????????????°??????????j_min???????????????
        int j_min = i;
        for(int j=i+1; j<NumOfData; j++) {
            if( a[j_min][1] > a[j][1] ) {
                j_min = j;
            }
        }
        
        //i??¨j_min????????????????????¨??§???i?????§??????????????????
        string tmp;
        tmp = a[i];
        a[i] = a[j_min];
        a[j_min] = tmp;
    }
    
    //display a[]
    for(int k=0; k<NumOfData; k++) {
        if(k==0) cout << a[k];
        else cout << " " << a[k];
    }
    dout << " <--- a[] sorted by Selection Sort" << endl;
    cout << endl;
    
    
    //check suit order
    string suitOrder_sortedBySelection[10]; //????????????????????????????????????????????????????????????
    for(int i=0; i<10; i++) {
        //??????????????¨??????????????°??????i????????????????????????????????????suitOrder???????????????????????????
        for(int k=0; k<NumOfData; k++) {
            if( a[k][1]-'0' == i ) {
                suitOrder_sortedBySelection[i] += a[k][0];
            }
        }
        
        dout << "suitOrder_sortedBySelection[" << i << "] = " << suitOrder_sortedBySelection[i] << endl;
    }
    dout << endl;
    
    isStable = true;
    for(int i=0; i<10; i++) {
        if( suitOrder_original[i] != suitOrder_sortedBySelection[i] ) {
            isStable = false;
            break;
        }
    }
    
    cout << (isStable ? "Stable" : "Not stable") << endl;

    
    
    
    
    return 0;
}

Measured memory_bytes: 3200