#include<stdio.h>
struct {
int first;
int second;
}content[100];
inline void setConValue(int index, int first, int second){
content[index].first = first;
content[index].second = second;
}
int main(){
int first,second;//input
int capacity = 0; //current
int current_deal;
while(scanf("%d %d",&first,&second)){
if(!first&&!second) break;
if(!capacity){
setConValue(capacity++, first, second);
continue;
}
for(current_deal = 0; current_deal < capacity; current_deal++){
if(content[current_deal].first == first){
content[current_deal].second += second;
break;
}
}
if(current_deal == capacity)
setConValue(capacity++, first, second);
}
printf("%d %d\n",content[current_deal].first, content[current_deal].second);
}
return 0;
}
struct {
int first;
int second;
}content[100];
inline void setConValue(int index, int first, int second){
content[index].first = first;
content[index].second = second;
}
int main(){
int first,second;//input
int capacity = 0; //current
int current_deal;
while(scanf("%d %d",&first,&second)){
if(!first&&!second) break;
if(!capacity){
setConValue(capacity++, first, second);
continue;
}
for(current_deal = 0; current_deal < capacity; current_deal++){
if(content[current_deal].first == first){
content[current_deal].second += second;
break;
}
}
if(current_deal == capacity)
setConValue(capacity++, first, second);
}
//output results
for(current_deal = 0;current_deal < capacity;current_deal++){printf("%d %d\n",content[current_deal].first, content[current_deal].second);
}
return 0;
}