use std::{collections::BTreeMap, io::Read};

fn main() {
	let mut s = String::new();
	std::io::stdin().read_to_string(&mut s).ok();
	let l: Vec<_> = s.lines().collect();
	let n: usize = l[0].parse().unwrap();
	let mut h = BTreeMap::new();
	for i in 1..=n {
		*h.entry(l[i]).or_insert(0) += i * (n - i + 1);
	}
	for (k, v) in h {
		println!("{v} {k}")
	}
}