#include <stdio.h>

typedef struct{
  char moji;
  int a;
}Set;

void quicksort(int ,int);
int partition(int,int);
void swap(Set*,Set*);

int n;
Set A[100000];

int main(int argc, char const *argv[]) {
  int i;

  scanf("%d", &n);
  for(i=0;i<n;i++) scanf(" %c%d\n", &A[i].moji,&A[i].a);

  quicksort(0, n-1);

  for(i=0;i<n;i++) printf("%c %d\n", A[i].moji,A[i].a);
  for(i=0;i<n-1;i++){
    if(A[i].moji>A[i+1].moji && A[i].a==A[i+1].a){
      printf("Not stable\n");
      break;
    }
  }
  if(i==n-1) printf("Stable\n");

  return 0;
}

void quicksort(int p, int r){
  int q;
  if(p<r){
    q = partition(p,r);
    quicksort(p,q-1);
    quicksort(q+1,r);
  }
}

int partition(int p, int r){
  int x,i,j;

  x = A[r].a;
  i = p-1;
  for(j=p;j<r;j++){
    if(A[j].a<=x){
      i++;
      swap(&A[i],&A[j]);
    }
  }
  swap(&A[i+1],&A[r]);
  return i+1;
}

void swap(Set *a, Set *b){
  Set c;

  c.moji = a->moji;
  a->moji = b->moji;
  b->moji = c.moji;

  c.a = a->a;
  a->a = b->a;
  b->a = c.a;
}