/*
优先队列, 两个优先性处理。。
*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<queue>
#include<vector>
#define manx 350
using namespace std;
struct temp{
string str;
int num;
int point;
}node[manx];
int k;
struct comp{
bool operator()(temp &t1,temp &t2){
return t1.num<t2.num || t1.num==t2.num && t1.point>t2.point;
}
};
priority_queue<temp, vector<temp>, comp >que;
void PN(){
for(int i=1;i<=k;i++)
cout<<node[i].str<<" "<<node[i].num<<endl;
}
int main(){
int n;
while(cin>>n){
while(!que.empty()) que.pop();
temp te;
for(int i=1;i<=n;i++){
cin>>te.str>>te.num;
te.point=i;
que.push(te);
}
int flag=0,mark=0;
k=0;
for(int i=1;i<=n;i++){
cin>>te.str>>te.num;
temp ant=que.top();
node[++k]=ant;
if(ant.str!=te.str && ant.num==te.num){
flag=1;
que.pop();
continue;
}
if(ant.str!=te.str && ant.num!=te.num){
que.pop();
mark=1;
continue;
}
if(ant.str==te.str && ant.num==te.num){
que.pop();
continue;
}
}
if(mark){printf("Error\n"); PN(); continue; }
if(flag){printf("Not Stable\n"); PN(); continue; }
printf("Right\n");
}
}
/*
3
aa 10
bb 10
cc 20
cc 20
bb 10
aa 10
*/