## BTreeMap 有序Map无序再排序

use std::collections::btree_map::Entry;
use std::collections::BTreeMap;
use std::io;
pub fn main(){
    let mut line1 = String::new();
    io::stdin().read_line(&mut line1).expect("expect a line");
    let num = line1.trim_end().parse::<i32>().unwrap();
    let mut map = BTreeMap::<i32, i32>::new();
    for _ in 0..num {
        line1.clear();
        io::stdin().read_line(&mut line1).expect("expect a line");

        let pair: Vec<i32> = line1
            .trim_end()
            .split(' ')
            .map(|s| s.parse::<i32>().unwrap())
            .collect();
        
        map.entry(pair[0])
        .and_modify(|entry| *entry += pair[1])
        .or_insert(pair[1]);
    }

    for (key, value) in map.iter() {
        println!("{} {}", key, value);
    }
}