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, columns) = (&b[0], &b[1..].iter().map(|x| x.parse::().unwrap()).collect::>()); let mut rows: Vec = Vec::new(); for _ in 0..n { rows.push(read()); } for x in 0..n { for y in 0..m { let answer = if operator=="+" {rows[x]+columns[y]}else{rows[x]*columns[y]}; println!("{:?}", answer); } } }