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, '.') } n.times do |y| n.times do |x| cd = (y - sr).abs + (x - sc).abs if cd % 2 == 1 && cd // 2 < (k - d) // 2 s[y][x] = '#' end end end # 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] == '#' || (y == tr && x == tc) || (y == sr && x == sc) # 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