#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef string::const_iterator State; #define Ma_PI 3.141592653589793 #define eps 1e-5 #define LONG_INF 1e18 #define GOLD 1.61803398874989484820458 #define MAX_MOD 1000000007LL #define MOD 998244353LL #define seg_size 262144*4 #define REP(a,b) for(long long a = 0;a < b;++a) int grid[1000][1000] = {}; int main() { int n, k; cin >> n >> k; for (int lane = 1;; ++lane) { int cnt = 0; int tracker[2000] = {}; queue go; REP(q, lane) { go.push(q); } REP(i, lane) { REP(q, lane) { grid[i][q] = 0; } int tea = go.size(); for (int q = 0;q < tea&&q < k; ++q) { int hoge = go.front(); go.pop(); if (tracker[hoge] < k) { grid[i][hoge] = 1; tracker[hoge]++; cnt++; go.push(hoge); } } } if (n <= cnt) { cout << lane << endl; REP(i, lane) { REP(q, lane) { if (grid[i][q] == 1) { n--; if (n >= 0) cout << "#"; else cout << "."; } else { cout << "."; } } cout << endl; } return 0; } } }