#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
typedef struct{
  char name;
  int num;
}CARD;
void quick(CARD *,int,int);
int func(CARD *,int,int);
int stable(CARD *,CARD *);

int n;
int main(){
  int i,j,k;
  CARD a[100000];
  char str[2];

  CARD *a2,*b2;
  int *c;
  int max=-1;
 
 
  
  scanf("%d",&n);

   a2=(CARD *)malloc((n+1)*sizeof(CARD));
  b2=(CARD *)malloc((n+1)*sizeof(CARD));
  
  for(i=0;i<n*2;i++){
    scanf("%s",str);
    if(i%2!=0){a[i/2].num=atoi(str);}
    else a[i/2].name=str[0];
    if(atoi(str)>=max)max=atoi(str);
  }
  for(i=1;i<n+1;i++){
    a2[i].num=a[i-1].num;
    a2[i].name=a[i-1].name;
  }
  
  c=(int *)malloc((max+1)*sizeof(int));
 
   for(i=0;i<max+1;i++){
     c[i]=0;
   }
   for(j=1;j<=n;j++){
     c[a2[j].num]++;
   }
  
   for(i=1;i<max+1;i++){
     c[i]=c[i]+c[i-1];
   }
  
   for(j=n;j>=1;j--){
     b2[c[a2[j].num]].num=a2[j].num;
     b2[c[a2[j].num]].name=a2[j].name;
     c[a2[j].num]--;
   }
  
  
  quick(a,0,n-1);
  if(stable(a,b2))printf("Stable\n");
  else printf("Not stable\n");

  for(i=0;i<n;i++){
    printf("%c %d\n",a[i].name,a[i].num);
  }
   free(a2);
   free(b2);
   free(c);
   
  return 0;
}
void quick(CARD a[],int p,int r){
  int q;
  if(p<r){
    q=func(a,p,r);
    quick(a,p,q-1);
    quick(a,q+1,r);
  }
  return;
}
    
int func(CARD a[],int p,int r){
  int x,i,j,base;
  CARD temp;
  x=a[r].num;
  i=p-1;
  for(j=p;j<=r-1;j++){
    if(a[j].num<=x){
      i=i+1;
      temp=a[j];
      a[j]=a[i];
      a[i]=temp;
    }
  }
  temp=a[i+1];
  a[i+1]=a[r];
  a[r]=temp;
  base=i+1;
  return base;
}
int stable(CARD a[],CARD b[]){
  int i;
  for(i=0;i<n;i++){
    if(a[i].num==b[i+1].num && a[i].name!=b[i+1].name) return FALSE;
  }
  return TRUE;
}
  

