#include <stdio.h>
#define SWAP(type,a,b) {type temp=a; a=b; b=temp;}
int Partition(int *, int, int);
void QuickSort(int *, int, int);

typedef struct{
  int num;
  char mark;
  int check;
}Card;

int main(){
  int i, j, n, flag = 0;

  // Input n
  scanf("%d", &n);

  // Create A[n]
  Card A[n];

  // Input A[n]
  for(i = 0; i < n; i++){
    scanf("%c%d", &A[i].mark, &A[i].num);
    A[i].check = i;
  }

  // QuickSort
  QuickSort(A, 0, n - 1);

  // Judge
  for(i = 0; i < n; i++){
    if(A[i].num == A[i + 1].num && A[i].check > A[i + 1].check){
      printf("Not stable\n");
      flag = 1;
      break;
    }
  }
  if(flag == 0) printf("Stable\n");

  // Output
  for(i = 0; i < n; i++) printf("%c %d\n", A[i].mark, A[i].num);

  return 0;
}

// Partition function
int Partition(Card A[], int p, int r){
  int x, i, j;
  // i is <, j is |

  // Set x, i
  x = A[r];
  i = p - 1;

  // Partition
  for(j = 0; j < r; j++){

    if(A[j] <= x){
      i++;
      SWAP(int, A[i], A[j]);
    }
  }
  SWAP(int, A[i + 1], A[r]);

  return i + 1;
}

// QuickSort function
void QuickSort(Card 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);
  }
}