#include<stdio.h>

struct Card{
   char suit;
   char value;
};

int main () {

   struct Card C1[36], C2[36], C3;
   int n, i, j, mini, hantei = 0;
   char ch;

   scanf("%d%c",&n, &ch);

   for(i = 0; i < n; i++){
      scanf("%c%c%c", &C1[i].suit, &C1[i].value, &ch);
   }


   for(i = 0; i < n; i++){
      C2[i] = C1[i];
   }



   for(i = 0; i <= n-1; i++){
      for(j = n-1; j >= i+1; j--){
         if(C1[j].value < C1[j-1].value){
            C3 = C1[j];
            C1[j] = C1[j-1];
            C1[j-1] = C3;
         }
      }
   }


   for(i = 0; i <= n-1; i++){
      mini = i;
      for(j = i; j <= n-1; j++){
         if(C2[j].value < C2[mini].value){
            minj = j;
         }
      }
      if(mini != i){
         C3 = C2[j];
         C2[j] = C2[mini];
         C2[mini] = C3;
      }
   }



   for(i = 0; i < n; i++){
      if(i){
         printf(" ");
      }
      printf("%c%c", C1[i].suit, C1[i].value);
   }
   printf("\nStable\n");


   for(i = 0; i < n; i++){
      if(i){
         printf(" ");
      }
      printf("%c%c", C2[i].suit, C2[i].value);
      if(C1[i].suit == C2[i].suit){
         check++;
      }
   }


   if(check == n){
      printf("\nStable\n");
   }else{
      printf("\nNot stable\n");
   }

   return 0;
}