#include <stdio.h>
#include <stdlib.h>
#define MAX 100000

int partition(int *A,int p,int r);
void quicksort(int *A,int p,int r);
void change_i(int *A,int i,int j);
void change(char *C,int i,int j);

char *C;
int flag=0;

int main(){
  int n,i,q;
  int *A;

  scanf("%d", &n);

  A =(int *)malloc(sizeof(int)*n);
  C =(char *)malloc(sizeof(char)*n);

  for ( i = 0; i < n; i++ ){
    scanf(" %c %d", &C[i],&A[i]);
  }
  
  quicksort(A,0,n-1);

  if(flag==0) printf("Stable\n");
  else printf("Not stable\n");

  for ( i = 0; i < n; i++ ){
    printf("%c %d\n",C[i],A[i]);
  }
  return 0;
}

int partition(int *A,int p,int r){
  int x,i,j,a;  
  x = A[r];
  
  i = p-1;
  for (j = p; j <= r-1; j++){
   
    if (A[j] <= x){
 
      i = i+1;
      change_i(A,i,j);
      if(A[i]==A[j]&&i!=j) flag=1;
      change(C,i,j);
    }
  }
  change_i(A,i+1,r);
  if(A[i+1]==A[r] && i+1!=r) flag=1;
  change(C,i+1,r);


  return i+1;
}

void quicksort(int *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);
  }
}

void change_i(int *A,int i,int j ){
  int temp;
  temp = A[i];
  A[i] = A[j];
  A[j] = temp;
}
void change(char *C,int i,int j ){
  char temp;
  temp = C[i];
  C[i] = C[j];
  C[j] = temp;
}