fn read() -> T { let mut s = String::new(); std::io::stdin().read_line(&mut s).ok(); s.trim().parse().ok().unwrap() } fn read_vec() -> Vec { let mut s = String::new(); std::io::stdin().read_line(&mut s).ok(); s.trim().split_whitespace() .map(|e| e.parse().ok().unwrap()).collect() } fn main(){ let mut a:Vec = read_vec(); let (n,m)=(a[0],a[1]); let mut b:Vec = read_vec(); let operator = &b[0]; let columns:Vec= b.iter().skip(1).map(|s| s.parse().unwrap()).collect(); let mut rows: Vec = Vec::new(); for _ in 0..n { rows.push(read()); } for i in 0..n { for j in 0..m { let mut val = 0; if operator=="*"{ val = rows[i] * columns[j]; } else{ val = rows[i] + columns[j]; } print!("{} ", val); } println!(); } }