package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
mp := make(map[int]int, 500)
input := scanner.Text()
if len(input) == 0 {
break
}
end, _ := strconv.Atoi(input) // str转int
for i := 0; i < end; i++ {
scanner.Scan() // 重新扫描
arr := strings.Fields(scanner.Text()) // 字符串分隔
k, _ := strconv.Atoi(arr[0])
v, _ := strconv.Atoi(arr[1])
if val, ok := mp[k]; ok { // 判断 map 键值对是否存在
mp[k] = v + val
} else {
mp[k] = v
}
}
keys := make([]int, 0, 500) // 提取 keys
for key := range mp {
keys = append(keys, key)
}
sort.Ints(keys) // 数组排序
for _, item := range keys {
fmt.Printf("%d %d\n", item, mp[item])
}
}
}