// #pragma GCC target("avx2") #pragma GCC optimize("O3") // #pragma GCC optimize("unroll-loops") #include // #include // #include using namespace std; // using mint = atcoder::modint998244353; using P = pair; const int M = 998244353; const long long LM = 1LL << 60; vector solve(int h, int w, int k) { if (k == 0) { return vector(h, string(w, '.')); } if (h == 1 || w == 1) { if (k == 1) { vector tmp(h, string(w, '.')); tmp[0][0] = '#'; return tmp; } else { return {}; } } assert(h >= 2 && w >= 2); if (k == 1) { return {}; } assert(h >= 2 && w >= 2 && k >= 2); if (k < h + w - 1) { int ci = min(k - 1, h - 1); int cj = k - ci; vector tmp(h, string(w, '.')); for (int i = 0; i < ci; ++i) { for (int j = 0; j < cj; ++j) { tmp[i][j] = '#'; } } return tmp; } for (int sw = 0; sw < 2; ++sw) { vector b(h, string(w, '.')); for (int j = 0; j < w; ++j) { b[0][j] = '#'; } int rem = k - w; int si = 1; int lim = w - 1; for (; si < h - 1 && rem % 2 == 1; ++si) { if (rem >= 1) { lim = w - 2; b[si][w - 1] = '#'; rem -= 1; } } for (int j = 1; j < lim; j += 2) { for (int i = 1; i < h - 1; ++i) { if (rem >= 2) { b[i][j] = '#'; rem -= 2; } } } for (; si < h - 1; ++si) { if (rem >= 1) { b[si][w - 1] = '#'; rem -= 1; } } if (rem == 0) { if (sw) { vector tmp(w, string(h, '.')); for (int i = 0; i < h; ++i) { for (int j = 0; j < w; ++j) { tmp[j][i] = b[i][j]; } } swap(b, tmp); } return b; } } return {}; } int main() { cin.tie(0); ios::sync_with_stdio(0); int h, w, k; cin >> h >> w >> k; auto b = solve(h, w, k); // cout << b.size() << '\n'; if (b.empty()) { cout << -1 << '\n'; return 0; } for (auto&& i : b) { cout << i << '\n'; } return 0; }