use std::cmp::{max, min}; use std::io::Read; fn solve(abcs: Vec>) { abcs.iter().for_each(|abc| { let a = abc[0]; let b = abc[1]; let c = abc[2]; let max_ac = max(a, c); let min_ac = min(a, c); if max_ac < b || min_ac > b { if max_ac == min_ac { // a = c = 1 if a == 1 { println!("{}", -1); // c - 1 = b } else if min_ac > b && min_ac - b == 1 { if b > 1 { println!("{}", 2); } else { println!("{}", -1); } } else { println!("{}", 1); } } else { println!("{}", 0); } // a = b = c } else if a == c { if a >= 3 { println!("{}", 3); } else { println!("{}", -1); } // ex.) a > b = c } else if min_ac == b { if b >= 2 { println!("{}", 1); } else { println!("{}", -1); } // ex.) a = b > c } else if max_ac == b { if b - min_ac > 1 { println!("{}", 1); } else { if min_ac > 1 { println!("{}", 2); } else { println!("{}", -1); } } // ex.) a > b > c } else { let a2b = max_ac - b + 1; let b2c = b - min_ac + 1; if min_ac == 1 { if b == 2 { println!("{}", -1); } else { println!("{}", a2b); } } else { println!("{}", min(a2b, b2c)); } } }); } fn main() { let mut all_data = String::new(); std::io::stdin().read_to_string(&mut all_data).ok(); let all_data: Vec<&str> = all_data.trim().split('\n').map(|a| a.trim()).collect(); let t: usize = all_data.iter().next().unwrap().trim().parse::().unwrap(); let abc: Vec> = all_data.iter().skip(1).take(t) .map(|a| a.split_whitespace().map(|i| i.parse::().unwrap()).collect::>()) .collect(); solve(abc); }