#include<stdio.h>

#define Max 100000

int A[Max];
char Ac[Max];
int partition(int,int);
void quicksort(int, int);


int main(){

  int i,n,q,flag = 0;
  
  scanf("%d",&n);
  for(i=0;i<n;i++){
    scanf(" %c %d",&Ac[i],&A[i]);
  }

  quicksort(0,n-1);
  
  for(i=0;i<n-1;i++){
    if(A[i]==A[i+1]){
      if(Ac[i]=='D'){
	if(Ac[i+1]=='H'){
	  flag=1;

	}}
      else if(Ac[i]=='S'){
	if(Ac[i+1]=='H'||Ac[i+1]=='D'){
	  flag = 1;
	  
	}}
      else if(Ac[i]=='C'){
	flag = 1;
	
      }
    }
  }
  
  if(flag == 1)printf("Not stable\n");
  else printf("Stable\n");
  
  for(i=0;i<n-1;i++){
    printf("%c %d\n",Ac[i],A[i]);
  }
  printf("%c %d\n",Ac[i],A[i]);

  return 0;
  
}


int partition(int p,int r){
  int x;
  int i,j;
  int s;
  char y,t;
  
  x=A[r];
  i=p-1;
  for(j=p; j < r; j++){
    if(A[j]<= x){
      i++;
      s=A[i];
      t=Ac[i];
      A[i]=A[j];
      Ac[i]=Ac[j];
      A[j]=s;
      Ac[j]=t;
    }
  }
  s=A[i+1];
  t=Ac[i+1];
  A[i+1]=A[r];
  Ac[i+1]=Ac[r];
  A[r]=s;
  Ac[r]=t;
  
  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);
  }
}