#include<stdio.h>
#include<string.h>
#define N 100000
int partition(int,int);
void quicksort(int,int);
int judge(int n);
char Ina[N],Outa[N];
int Inb[N],Outb[N];
int main(){
  int n,i,p=0,j;
  scanf("%d",&n);
  for(i=0;i<n;i++){
    scanf(" %c %d",&Ina[i],&Inb[i]);
   
    // printf("%c\n",Ina[i]);
    Outa[i]=Ina[i];
    Outb[i]=Inb[i];
  }
  // 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("%c %d\n",Outa[i],Outb[i]);
  
  return 0;
}

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

  x = Outb[r];
  i = p-1;

  for(j=p;j<r;j++){
   
    if(Outb[j]<=x){
      i++;
      z=Outa[i];      
      Outa[i]=Outa[j];      
      Outa[j]=z;
      
      y=Outb[i];
      Outb[i]=Outb[j];      
      Outb[j]=y;
    }
  }
  z=Outa[i+1];
  Outa[i+1]=Outa[r];
  Outa[r]=z;
  
  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(Inb[i]==Inb[j] && Inb[i]==Outb[b] && Inb[j]==Outb[a] && Ina[i]==Outa[b] && Ina[j]==Outa[a])
	    return 1;
	}
      }
    }
  }
  return 0;
}