//
// Created by gs on 2026/3/5.
//

// HJ8 合并表记录

#include <stdio.h>

int main() {
    int n, i = 0, j = 0;
    int aa[2][501] = {0};
    scanf("%d", &n);
    while (scanf("%d %d", &aa[0][i],
                 &aa[1][i]) != EOF) { // 注意 while 处理多个 case
        i++;
        if (i == n)
            break;
    }

    for (i = 0; i < n; i++) {
        int min = aa[0][i];
        int index = i;
        for (j = i + 1; j < n; j++) {
            if (min > aa[0][j]) {
                min = aa[0][j];
                index = j;
            }
        }

        int a0 = aa[0][i];
        int a1 = aa[1][i];
        aa[0][i] = aa[0][index];
        aa[1][i] = aa[1][index];
        aa[0][index] = a0;
        aa[1][index] = a1;
    }

    for (i = 0; i < n; i++) {
        for (j = i + 1; j < n; j++) {
            if (aa[0][i] == aa[0][j]) {
                aa[1][i] += aa[1][j];
                aa[0][j] = -1;
            } else {
                break;
            }
        }
    }

    for (i = 0; i < n; i++) {
        if (aa[0][i] != -1) {
            printf("%d %d\n", aa[0][i], aa[1][i]);
        }
    }


    return 0;
}