#include<stdio.h>
#include<string.h>
#define N 100000
int partition(int,int);
void quicksort(int,int);
int judge(int n);
char In[N][3],Out[N][3];
int Inb[N],Outb[N];
int main(){
  int n,i,p=0,j;
  scanf("%d",&n);
  for(i=0;i<n;i++){
    scanf("%c%c%c",&In[i][0],&In[i][1],&In[i][2]);
   
     printf("%s\n",In[i]);
    strncpy(Out[i],In[i],3);
    strncpy(Out[i],In[i],3);
  }
  //for(i=0;i<n;i++)printf("%c %d\n",Outa[i],Outb[i]);
  quicksort(p,n-1);
  j=judge(n);
  
  if(j==0)   printf("Stable\n");
  else printf("Not stable\n");
  for(i=0;i<n;i++)printf("%s\n",Out[i]);
  
  return 0;
}

int partition(int p,int r){
  int x,i,j,y;
  char z[3];

  x = (int)Out[r][3];
  i = p-1;

  for(j=p;j<r;j++){
   
    if((int)Out[j][3]<=x){
      i++;
      strncpy(z,Out[i],3);      
      strncpy(Out[j],Out[j],3);      
      strncpy(Out[j],z,3);
      
      /*  y=Outb[i];
      Outb[j]=Outb[i];      
      Outb[j]=y;
      }*/
  }
    strncpy(z,Out[i+1],3);
    strncpy(Out[i+1],Out[r],3);
    strncpy(Out[r],z,3);
  
    /* y=Outb[i+1];
  Outb[i+1]=Outb[r];
  Outb[r]=y;
    */
  }
  return i+1;
}

void quicksort(int p,int r){
  int q;
  if(p<r){
    q = partition(p,r);
    quicksort(p,q-1);
    quicksort(q+1,r);
  }
  return ;
}
int judge(int n){
  int i, j, a, b;
  for(i=0;i<n;i++){
    for(j=i+1;j<n;j++){
      for(a=0;a<n;a++){
	for(b=a+1;b<n;b++){
	  if(In[i][3]==In[j][3] && In[i][3]==Out[b][3] && In[j][3]==Out[a][3] && In[i][0]==Out[b][0] && In[j][0]==Out[a][0])
	    return 1;
	}
      }
    }
  }
  return 0;
}