use std::collections::HashMap; fn main() { let mut n = String::new(); std::io::stdin().read_line(&mut n).ok(); let n: usize = n.trim().parse().unwrap(); let mut tag2count: HashMap = HashMap::new(); for _ in 0..n { let mut ab = String::new(); std::io::stdin().read_line(&mut ab).ok(); let mut point = String::new(); std::io::stdin().read_line(&mut point).ok(); let point: usize = point.trim().split_whitespace().skip(1).next().unwrap().parse().unwrap(); let mut tags = String::new(); std::io::stdin().read_line(&mut tags).ok(); tags.trim().split_whitespace().for_each(|tag| { if let Some(x) = tag2count.get_mut(&tag.to_string()) { *x += point; } else { tag2count.insert(tag.to_string().to_owned(), point); } }); } let mut result: Vec<_> = tag2count.iter().collect(); result.sort_by_key(|pair| pair.0); result.reverse(); result.sort_by_key(|pair| pair.1); result.iter().rev().take(10).for_each(|r| { println!("{} {}", r.0, r.1); }); }