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 bb: Vec = xx[3..3 + m].iter().map(|&s| s.parse().unwrap()).collect(); let aa: Vec = xx[3 + m..].iter().map(|&s| s.parse().unwrap()).collect(); let op = match xx.get(2) { Some(&"+") => |a, b| a + b, Some(&"*") => |a, b| a * b, _ => unreachable!(), }; for a in aa { for (i, &b) in bb.iter().enumerate() { if i != 0 { print!(" "); } print!("{}", op(a, b)); } println!(); } }