#include<stdio.h>
#include<string.h>

#define MAX 100000

void quickSort(int *,char *,int,int);
int partition(int *,char *,int,int);
int Stable(int *,char *,int);


int main(){

  int i,count,n,k;
  char B[MAX],c,d,e;
  int A[MAX];

  scanf("%d%c",&n,&e);
  count=0;
  /*
  for(i=1;i<=(2*n);i++){
    if(i%2==1)scanf("%c",&B[(i+1)/2]);
    else scanf("%d",&A[i/2]);
    printf("%d",n);  
    }
  */
  for(i=1;i<n+1;i++)scanf("%c%c%d%c",&B[i],&c,&A[i],&d);
  

  quickSort(A,B,1,n);

  if(Stable(A,B,n)==0) printf("Stable\n");
  else printf("Not Stable\n");

  for(k=1;k<=n;k++){
    printf("%c %d\n",B[k],A[k]);
  }

  return 0;
}

void quickSort(int *A,char *B,int p,int r){
  int q;
  
  if(p<r){
    q=partition(A,B,p,r);
    quickSort(A,B,p,q-1);
    quickSort(A,B,q+1,r);
  }
}

int partition(int *A,char *B,int p,int r){
  int x,i,j,swap;
  char exc;

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

  for(j=p;j<r;j++){
    if(A[j]<=x){
      i++;
      swap=A[i];
      A[i]=A[j];
      A[j]=swap;
      exc=B[i];
      B[i]=B[j];
      B[j]=exc;
    
    }
}
      swap=A[i+1];
      A[i+1]=A[r];
      A[r]=swap;
      exc=B[i+1];
      B[i+1]=B[r];
      B[r]=exc;

      return i+1;
}

int Stable(int *A ,char *B,int n){
  int i;

  for(i=1;i<n;i++){
    if(A[i]==A[i+1]){
      if(B[i]>B[i+1]) return 1;
    }
  }

  return 0;
}