fn main() { let stdin = std::io::read_to_string(std::io::stdin()).unwrap(); let mut stdin = stdin.split_ascii_whitespace(); let n: usize = stdin.next().unwrap().parse().unwrap(); let equations: Vec<(i32, i32)> = (0..n) .map(|_| { ( stdin.next().unwrap().parse().unwrap(), stdin.next().unwrap().parse().unwrap(), ) }) .collect(); println!("{}", output(solve(equations))); } fn solve(equations: Vec<(i32, i32)>) -> i32 { let candidate = equations[0].1 - equations[0].0; if candidate.signum() != 1 { return -1; } for (x, y) in equations { if candidate + x != y { return -1; } } candidate } fn output(ans: i32) -> i32 { ans }