#include<stdio.h>
#include<stdlib.h>

int Partition(int*,char*,int,int);
void QuickSort(int*,char*,int,int);
int isStable(int*,int*,char*,char*);

int n,count=0;

int main(){

  int A[100001],B[100001],i,r;
  char in[100001],out[100001];

  scanf("%d",&n);
  for(i=0;i<n;i++){
    scanf(" %c",&in[i]);
    out[i]=in[i];
    scanf("%d",&A[i]);
    B[i]=A[i];
  }

   QuickSort(B,out,0,n-1);
  
   if(isStable(A,B,in,out)!=0) printf("Stable\n");
  else printf("Not stable\n");
 

  for(i=0;i<n;i++)
    printf("%c %d\n",out[i],B[i]);

  
  return 0;
}

int Partition(int* A,char* C,int p,int r){

  int x,i,j,tmp;
  char c,k;
  
   x=A[r];
     i=p-1;

  for(j=p;j<r;j++){
    if(A[j]<=x){
      i++;
      tmp=A[i];
      c=C[i];
      A[i]=A[j];
      C[i]=C[j];
      A[j]=tmp;
      C[j]=c;
    }
   
  }
    tmp=A[i+1];
    c=C[i+1];
    A[i+1]=A[r];
    C[i+1]=C[r];
    A[r]=tmp;
    C[r]=c;
  
    return i+1;
}

void QuickSort(int* A,char* C,int p,int r){

  int q;
  
  if(p<r){
    q=Partition(A,C,p,r);
    QuickSort(A,C,p,q-1);
    QuickSort(A,C,q+1,r);
  }
}

int isStable(int* A,int* B,char* in,char* 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]!=in[j])&&(A[i]==A[j]))&&((in[i]==out[b])&&(A[i]==B[b]))&&((in[j]==out[a])&&(A[j]==B[a])))
	    return 0;
	}
      }
    }
  }
  return 1;
}