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