#include<stdio.h>
#include<string.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],in[100000];
  char str[2],memory[4][100000];
  scanf("%d",&n);
  for(i=0;i<n*2;i++){
    scanf("%s",str);
    if(i%2!=0){a[i/2].num=in[i/2].num=atoi(str);}
    else a[i/2].name=in[i/2].name=str[0];
  }
  
  quick(a,0,n-1);
  
  if(stable(in,a)==TRUE)printf("Stable\n");
  else printf("Not stable\n");
  
  for(i=0;i<n;i++){
    printf("%c %d\n",a[i].name,a[i].num);
  }
  
  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 in[],CARD out[]){
  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].num==in[j].num && in[i].name==out[b].name && in[j].name==out[a].name && in[i].num==out[b].num && in[j].num==out[a].num)
	    return FALSE;
	}
      }
    }
  }
  return TRUE;
}
  

