#include<stdio.h>
#include<string.h>
int main(){
  int n,i,j,min,flagx=0,flagy=0;
  char incard[36][3],outcardx[36][3],outcardy[36][3],temp[3];
  scanf("%d",&n);
  for(i=0;i<n;i++){
    scanf("%s",incard[i]);
    strcpy(outcardx[i],incard[i]);//strncpy
    strcpy(outcardy[i],incard[i]);//strncpy
  }
  //bubble
  for(i=0;i<n;i++){
    for(j=0;j<n-1;j++){
      if(outcardx[j][1]>outcardx[j+1][1]){
	strcpy(temp,outcardx[j]);
	strcpy(outcardx[j],outcardx[j+1]);
	strcpy(outcardx[j+1],temp);
      }
    }
  }
  //choice故障中
  for(i=0;i<n;i++){
    min=i;
    for(j=i;j<n;j++){
      if(outcardy[i][1]==outcardy[j][1])flagy=1;
      if(outcardy[j][1]<outcardy[min][1]){
	min=j;
      }
    }
    if(i!=min){
      strcpy(temp,outcardy[min]);
      strcpy(outcardy[min],outcardy[i]);
      strcpy(outcardy[i],temp);
    }
  }
  for(i=0;i<n;i++){
    printf("%s",outcardx[i]);
    if(i!=n-1)printf(" ");
  }
  //正邪判定
  printf("\nStable\n");
  for(i=0;i<n;i++){
    printf("%s",outcardy[i]);
    if(i!=n-1)printf(" ");
  }
  //正邪判定
  if(flagy==0)printf("\nStable\n");
  else printf("\nNot Stable\n");
  return(0);
}