fn main() { let mut t = String::new(); std::io::stdin().read_line(&mut t).ok(); let t: usize = t.trim().parse().unwrap(); for _ in 0..t { let mut nm = String::new(); std::io::stdin().read_line(&mut nm).ok(); let nm: Vec<&str> = nm.trim().split_whitespace().collect(); let n = nm[0].chars().rev().map(|c| c as usize - '0' as usize).collect::>(); let m = nm[1].parse::().unwrap(); let mut summary = n[0]; let mut pow10 = 1usize; for i in 1..n.len() { pow10 *= 10; pow10 %= m; summary += n[i] * pow10; summary %= m; } println!("{}", summary * (summary + 1) / 2 % m); } }