import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
Map<Integer, Integer> map = new TreeMap<Integer,Integer>();
Integer values=0;
while(count>=1){
Integer key=sc.nextInt();
Integer value=sc.nextInt();
if(map.containsKey(key)){
Set set=map.keySet();
Iterator<Integer> it=set.iterator();
while(it.hasNext()){
//此处主要是为了取出重复key的values
//Integer k=it.next();并无实际作用,删了会报错
Integer k=it.next();
values=map.get(key);
}
map.put(key,value+values);
}else{
map.put(key,value);
}
count--;
}
Set<Map.Entry<Integer,Integer>> set=map.entrySet();
Iterator<Map.Entry<Integer,Integer>> it=set.iterator();
while(it.hasNext()){
Map.Entry<Integer,Integer> entry=it.next();
Integer key=entry.getKey();
Integer value=entry.getValue();
System.out.println(key+" "+value);
}
}
}