#include<stdio.h>
#include<string.h>
typedef struct qs{
  char c;
  int n;
}Q;
int Partition(Q *A,int p,int r){
  int i,x,j,temp1;
  char temp2;
  x = A[r].n;
  
  i = p-1;
  for(j = p;j <= r-1;j++){
    if(A[j].n <= x){
      i = i + 1;
      temp1=A[i].n;
      A[i].n=A[j].n;
      A[j].n=temp1;
      temp2=A[i].c;
      A[i].c=A[j].c;
      A[j].c=temp2;
    }
  } 
  temp1=A[i+1].n;
  A[i+1].n=A[r].n;
  A[r].n=temp1;
  temp2=A[i+1].c;
  A[i+1].c=A[r].c;
  A[r].c=temp2;
  return i+1;
}
int han(char c1,char c2){
  if(c1>c2)
    return 0;
  else
    return 1;
}
void Quicksort(Q *A,int p,int r){
  int q;
  if(p < r){
    q = Partition(A, p, r);
    Quicksort(A, p, q-1);
    Quicksort(A, q+1, r);
  }
}
int main(void){
  int n,i,h[100],han2=0;
  Q q[10000];
  scanf("%d",&n);
  for(i=0;i<n;i++)
    scanf(" %c %d",&q[i].c,&q[i].n);
  Quicksort(&q[0],0,n-1);
  for(i=1;i<n;i++)
    h[i]=han(q[i-1].c,q[i].c);
  for(i=1;i<n;i++){
    if(h[i]==1){
      printf("Not stable\n");
      han2=1;
      break;
    }
  }
  if(han2==0)
    printf("Stable\n");
  for(i=0;i<n;i++)
    printf("%c %d\n",q[i].c,q[i].n);
  return 0;
}