fn main() { let vec: Vec<(i32,i32)> = read_tuples(3); let abc = ["A","B","C"]; let mut vec = vec.iter().map(|&(h,w)|(-h,w)).zip(abc.iter()).collect::>(); vec.sort(); let ans = vec.iter().map(|&(_,c)|c).collect::>(); print_vec(&ans, "\n"); } fn read_tuple() -> (T1, T2) { let mut buf = String::new(); std::io::stdin().read_line(&mut buf).ok(); let mut it = buf.trim().split_whitespace(); let x = it.next().unwrap().parse::().ok().unwrap(); let y = it.next().unwrap().parse::().ok().unwrap(); (x, y) } fn read_tuples(n: usize) -> Vec<(T1, T2)> { let mut vec: Vec<(T1, T2)> = vec![]; for _ in 0 .. n { vec.push(read_tuple()); } vec } fn print_vec(vec: &Vec, sep: &str) { let out = vec.iter().map(|e| e.to_string()).collect::>().as_slice().join(sep); println!("{}", out); }