#![allow(unused_imports)] use itertools::*; use proconio::{input, marker::*}; fn distance(i1: usize, j1: usize, i2: usize, j2: usize) -> i64 { (i1.abs_diff(i2) + j1.abs_diff(j2)) as i64 } fn main() { input! { n: usize, k: i64, sr: Usize1, sc: Usize1, tr: Usize1, tc: Usize1, } let dist_min = distance(sr, sc, tr, tc); let dist_max = if dist_min % 2 == 0 { 2 * dist_min } else { 2 * dist_min - 1 }; if dist_min > k || (k - dist_min) % 2 != 0 || k > dist_max { println!("-1"); return; } let mut ans = vec![vec!['.'; n]; n]; let limit = k - dist_min - 1; for (i, j) in iproduct!(0..n, 0..n) { let d = distance(sr, sc, i, j); if d % 2 == 1 && d <= limit { ans[i][j] = '#'; } } for row in ans { println!("{}", row.iter().join("")); } }