//也是个水题,不过以前没用过set。。。。所以逼着我去学。
#include<iostream>
#include<string>
#include<map>
#include<set>
#include<algorithm>
#include<stdlib.h>
using namespace std;
set<int> my_set;
map<int,int> my_map;
int main(){
int n;
while(scanf("%d",&n),n){
my_set.clear();
my_map.clear();
my_set.insert(1000000000);
my_map[1000000000]=1;
for(int i=0;i<n;i++){
int k,g;
scanf("%d%d",&k,&g);
set<int>::iterator iter=my_set.lower_bound(g);
if(iter==my_set.begin()){
//int t=*iter;
printf("%d %d\n",k,my_map[*iter]);
}
else if(iter==my_set.end()){
iter--;
printf("%d %d\n",k,my_map[(*iter)]);
}
else{
int tmp=(*iter);
iter--;
if(tmp-g>=g-(*iter)){
printf("%d %d\n",k,my_map[(*iter)]);
}
else{
printf("%d %d\n",k,my_map[tmp]);
}
}
my_set.insert(g);
my_map[g]=k;
}
}
}