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