import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner1 = new Scanner(System.in);
int n = Integer.valueOf(scanner1.nextLine());
int len = 0;
if(n < 1 || n > 500) return;
Map<Integer,Integer> map = new HashMap<>();
while(len < n && scanner1.hasNext()) {
String[] strArray = scanner1.nextLine().split(" ");
if(strArray.length > 2) {
continue;
}
Integer one = Integer.valueOf(strArray[0]);
Integer two = Integer.valueOf(strArray[1]);
if(map.containsKey(one)){
map.put(one,map.get(one) + two);
}else{
map.put(one,two);
}
len++;
}
if(len==n) {
LinkedHashMap<Integer,Integer> res = ConTableRec(map);
for(Map.Entry<Integer,Integer> m:res.entrySet()){
System.out.println(m.getKey() +" " + m.getValue());
}
}
}
private static LinkedHashMap<Integer,Integer> ConTableRec(Map<Integer,Integer> maps){
LinkedHashMap<Integer,Integer> map = new LinkedHashMap<>();
//定义一个key数组
int[] keyArray = new int[maps.keySet().size()];
Iterator<Map.Entry<Integer,Integer>> it = maps.entrySet().iterator();
int i = 0;
while(it.hasNext() && i<keyArray.length){
Map.Entry<Integer,Integer> entry = it.next();
keyArray[i] = entry.getKey();
i++;
}
//对数组进行升序排序
for(int s = 0;s < keyArray.length;s++){
for(int j = keyArray.length - 1;j > s;j--){
if(keyArray[s]>keyArray[j]){
int tmp = keyArray[j];
keyArray[j] = keyArray[s];
keyArray[s] = tmp;
}
}
}
//对map遍历赋值
for(int t = 0;t < keyArray.length;t++){
map.put(keyArray[t],maps.get(keyArray[t]));
}
return map;
}
}