fn main() { let n: usize = { let mut buf = String::new(); std::io::stdin().read_line(&mut buf).unwrap(); buf.trim_end().parse().unwrap() }; let s: Vec = { let mut buf = String::new(); std::io::stdin().read_line(&mut buf).unwrap(); let iter = buf.split_whitespace(); iter.map(|x| x.parse().unwrap()).collect() }; let t: Vec = { let mut buf = String::new(); std::io::stdin().read_line(&mut buf).unwrap(); let iter = buf.split_whitespace(); iter.map(|x| x.parse().unwrap()).collect() }; let mut a = vec![vec![3; n]; n]; for i in 0..n { if s[i] == 1 { continue; } for j in 0..n { a[i][j] = if s[i] == 0 { 0 } else { 1 }; } } for j in 0..n { if t[j] == 1 { continue; } for i in 0..n { a[i][j] = if t[j] == 0 { 0 } else { 1 }; } } for i in 0..n { if s[i] != 1 || (0..n).any(|j| a[i][j] == 1) { continue; } for j in 0..n { if t[j] != 1 { continue; } if (0..n).any(|k| a[k][j] == 1) { continue; } a[i][j] = 1; break; } } for i in 0..n { if s[i] != 1 || (0..n).any(|j| a[i][j] == 1) { continue; } for j in 0..n { if a[i][j] == 3 { a[i][j] = 1; break; } } } for j in 0..n { if t[j] != 1 || (0..n).any(|i| a[i][j] == 1) { continue; } for i in 0..n { if a[i][j] == 3 { a[i][j] = 1; break; } } } let mut ans = 0; for i in 0..n { for j in 0..n { if a[i][j] == 1 { ans += 1; } } } println!("{}", ans); println!("{:?}", a); }