n, k = read_line.split.map(&.to_i) sr, sc = read_line.split.map { |v| v.to_i - 1 } tr, tc = read_line.split.map { |v| v.to_i - 1 } if sr > tr sr, tr = tr, sr sc, tc = tc, sc end d = (sr - tr).abs + (sc - tc).abs if d % 2 != k % 2 || k < d puts -1 exit end max = d + d // 2 * 2 if k > max puts -1 exit end s = Array.new(n) { Array.new(n, '.') } sr.upto(tr) do |y| {sc, tc}.min.upto({sc, tc}.max) do |x| sd = (sr - y).abs + (sc - x).abs next if sd % 2 == 0 || s[y][x] == '#' if (sd + 1) // 2 <= (k - d) // 2 cy = y cx = x while cy < n && cx >= 0 s[cy][cx] = '#' cy += 1 cx -= 1 end cy = y cx = x while cy >= 0 && cx < n s[cy][cx] = '#' cy -= 1 cx += 1 end end end end s.each do |r| puts r.join end