#include #define rep(i, n) for (int i = 0; i < (n); i++) #define repr(i, n) for (int i = (n) - 1; i >= 0; i--) #define range(a) a.begin(), a.end() using namespace std; using ll = long long; int main() { cin.tie(nullptr); ios::sync_with_stdio(false); int N, K; cin >> N >> K; for (int k = 1;; k++) { priority_queue> q; rep(i, k) { q.emplace(K, i); } vector> ans(k); int y = N; rep(i, k) { vector> tmp; rep(j, K) if (y > 0 && !q.empty()) { tmp.push_back(q.top()); q.pop(); y--; } for (auto p : tmp) { ans[i].push_back(p.second); if (p.first > 1) { q.emplace(p.first - 1, p.second); } } } if (y == 0) { vector grid(k, string(k, '.')); rep(i, k) for (int j : ans[i]) grid[i][j] = '#'; cout << k << endl; rep(i, k) cout << grid[i] << '\n'; return 0; } } }