#include using namespace std; using ll = long long; using ull = unsigned long long; using ld = long double; using pii = pair; using pll = pair; using vll = vector; const ll INF = LLONG_MAX / 4; bool chmin(auto& a, const auto& b) { return a > b ? a = b, 1 : 0; } bool chmax(auto& a, const auto& b) { return a < b ? a = b, 1 : 0; } auto sz(const auto& a) { return ssize(a); } #define OVERLOAD_REP(a, b, c, d, name, ...) name #define rep(...) OVERLOAD_REP(__VA_ARGS__, REP3, REP2, REP1, REP0)(__VA_ARGS__) #define REP0(x) for (ll _rep_counter = 0; _rep_counter < (x); ++_rep_counter) #define REP1(i, x) for (ll i = 0; (i) < (x); ++(i)) #define REP2(i, l, r) for (ll i = (l); (i) < (r); ++(i)) #define REP3(i, l, r, c) for (ll i = (l); ((c) > 0 ? (i) < (r) : (i) > (r)); i += (c)) #define each(x,a) for (auto&& x : a) #define MOD 998244353 #define ll0 ((ll)0) void solve() { ll n, k; cin >> n >> k; ll sx, sy, tx, ty; cin >> sy >> sx; cin >> ty >> tx; sx--;sy--;tx--;ty--; ll banana1 = abs(tx-sx); ll banana2 = abs(ty-sy); if(banana1 + banana2 > k || 2*(banana1 + banana2) < k) { cout << -1 << endl; return; } k = 2*(banana1+banana2)-k; if(k <= banana1) { vll v(n); ll x = min(tx,sx); ll y = min(ty,sy); rep(i, x+1) v[i] = i%2; rep(i, x+1, x+k+1) v[i] = v[x]; rep(i, x+k+1, n) v[i] = v[x] ^ ((i-x-k) % 2); rep(i, n) { string s = ""; rep(j, n) { s += ".#"[(i%2) ^ v[j]]; } cout << s << endl; } } else { vll v(n, 0); ll x = min(tx,sx); ll y = min(ty,sy); // rep(i, x+1) v[i] = i%2; // rep(i, x+1, x+banana1+1) v[i] = v[x]; // rep(i, x+banana1+1, n) v[i] = (x%2) ^ ((i-x-banana1) % 2); k -= banana1; rep(i, y+1) { string s = ""; rep(j, n) { s += ".#"[i%2]; } cout << s << endl; } rep(i, y+1, y+k+1) { string s = ""; rep(j, n) { s += ".#"[y%2]; } cout << s << endl; } rep(i, y+k+1, n) { string s = ""; rep(j, n) { s += ".#"[(y%2)^((i-y-k)%2)]; } cout << s << endl; } } } int main() { cin.tie(nullptr); ios_base::sync_with_stdio(false); solve(); }