#include <stdio.h>

int number, i, j, k, u;

struct {
    long long int index;
    long int value;
} data[500], buff;

int main() {
    scanf("%d\n", &number);
    //得到输入数组
    for (i = 0; i < number; i++) {
        scanf("%d %d\n", &data[i].index, &data[i].value);
    }
    //合并
    for (j = 0; j < number; j++) {
        for (k = j + 1; k < number; k++) {
            if (data[j].index == data[k].index) {
                data[j].value += data[k].value;
                for (u = k; u < number; u++) {
                    data[u] = data[u + 1];
                }
                number--;
                j--;
            }
        }
    }
    //排序
    for (i = 0; i < number - 1; i++) {
        for (j = i + 1; j < number; j++) {
            if (data[j].index < data[i].index) {
                buff = data[i];
                data[i] = data[j];
                data[j] = buff;
            }
        }
    }
    for (i = 0; i < number; i++) {
        printf("%d %d\n", data[i].index, data[i].value);
    }
    return 0;
}