#include<stdio.h>
#include<string.h>
void quicksort(int*,char *,int,int);
int partition(int *,char *,int,int);
int main(){
	int i,f=0,n;
	int n1=0,n2=0,n3=0,n4=0;
	char g;
	scanf("%d",&n);
	int N[n];
	char T[n];
	char Y[4][n];
	for(i=0;i<n;i++){
		scanf("%c%c %d",&g,&T[i],&N[i]);
		if(N[i]==1) {
			Y[0][n1]=T[i];
			n1++;
			}
			else if(N[i]==2) {
			Y[1][n2]=T[i];
			n2++;
			}
			else if(N[i]==3) {
			Y[2][n3]=T[i];
			n3++;
			}
			else if(N[i]==4) {
			Y[3][n4]=T[i];
			n4++;
			}
	}
	n1=0;
	n2=0;
	n3=0;
	n4=0;
	quicksort(N,T,0,n-1);
//printf("\n");
	for(i=0;i<n;i++){
		if(N[i]==1) {
			if(Y[0][n1]==T[i]) {
				f++;
			//	printf("%c %c %d\n",Y[0][n1],T[i],N[i]);
			}
			n1++;
			}
			
			 if(N[i]==2) {
		if(Y[1][n2]==T[i]) {
			f++;
			//printf("%c %c %d\n",Y[1][n2],T[i],N[i]);
			}
			n2++;
			}
			 if(N[i]==3) {
			if(Y[2][n3]==T[i]) {
				f++;
			//	printf("%c %c %d\n",Y[2][n3],T[i],N[i]);
				}
			n3++;
			}
			 if(N[i]==4) {
			if(Y[3][n4]==T[i]) {
				f++;
			//	printf("%c %c %d\n",Y[3][n4],T[i],N[i]);
				}
			n4++;
			}
	}
		if(f!=n-1) printf("Not stable\n");
	if(f==n-1) printf("Stable\n");
	for(i=0;i<n;i++){
		printf("%c %d\n",T[i],N[i]);
	}
	return 0;
}

void quicksort(int *a,char *t,int p,int r){
	int q;
	int i;
	if(p<r){
	q = partition(a,t,p, r);
   	quicksort(a,t,p,q-1);
   	quicksort(a,t,q+1,r);
   		}
}
int partition(int *a,char *t,int p,int r){
	int x,i,j,k;
	char v;
	x=a[r];
	i=p-1;
	for(j=p;j<r;j++){
		if(a[j]<=x){
			i=i+1;
			k=a[i];
			a[i]=a[j];
			a[j]=k;
			v=t[i];
			t[i]=t[j];
			t[j]=v;

		}
	}
	v=t[r];
	t[r]=t[i+1];
	t[i+1]=v;

	a[r]=a[i+1];
	a[i+1]=x;
	return i+1;
}
