fn main() { let mut xx = String::new(); std::io::Read::read_to_string(&mut std::io::stdin(), &mut xx).ok(); let xx: Vec<&str> = xx.split_whitespace().collect(); let m: usize = xx[1].parse().unwrap(); let k: u64 = xx[2].parse().unwrap(); let bb: Vec = xx[4..4 + m].iter().map(|&s| s.parse().unwrap()).collect(); let aa: Vec = xx[4 + m..].iter().map(|&s| s.parse().unwrap()).collect(); let op = match xx.get(3) { Some(&"+") => |a, b| a + b, Some(&"*") => |a, b| a * b, _ => unreachable!(), }; let mut answer = 0; for a in &aa { for b in &bb { answer += op(a, b); answer %= k; } } println!("{answer}"); }