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);
    }
}
}