import java.util.*;

/**
 * 【合并表记录】
 *
 * 描述:
 * 数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,
 * 即将相同索引的数值进行求和运算,输出按照index值升序进行输出。
 *
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        TreeMap<Integer, Integer> treeMap = new TreeMap<>();
        int size = sc.nextInt();

        for (int i = 0; i < size; i++) {
            int key = sc.nextInt();
            int value = sc.nextInt();

            if (treeMap.containsKey(key)) {
                treeMap.put(key, treeMap.get(key) + value);
            } else {
                treeMap.put(key, value);
            }
        }

        Set<Map.Entry<Integer, Integer>> entrySet = treeMap.entrySet();
        for (Map.Entry<Integer, Integer> entry : entrySet) {
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
    }
}