#include <bits/stdc++.h> using namespace std; const long long maxk = 4e12; int maxn = 2025; long long get(long long n) { return n * (n - 1) / 2; } bool a[2050][2050]; void solve(long long k, int sx, int sy) { if(k == 0) { for(int i = sx; i < maxn; i++) { for(int j = sy; j < maxn; j++) { a[i][j] = true; } } return; } if (sx>=maxn || sy>=maxn) { return; } assert(sx < maxn); assert(sy < maxn); int lenx = maxn - sx, leny = maxn - sy; // if(lenx > leny) { // swap(lenx, leny); // swap(sx, sy); // for(int i = 0; i < maxn; i++){ // for(int j = i + 1; j < maxn; j++){ // swap(a[i][j], a[j][i]); // } // } // } if(lenx < leny){ int j = 1; while(get(lenx) * get(j) <= k && j < leny) ++j; if(get(lenx) * get(j) > k) --j; if(j == 1){ // rossz eset int g = 1; while(get(g) <= k) ++g; --g; for(int i = sx + g; i < maxn; i++) a[i][sy] = a[i][sy+1] = true; for(int i = sx; i < maxn; i++) a[i][sy+2] = true; // for(int i = sx; i < maxn; i++) a[i][sy] = true; solve(k - get(g), sx, sy + 3); return; } if(j < leny){ for(int i = sx; i < maxn; i++) a[i][sy + j] = true; } solve(k - get(lenx) * get(j), sx, sy + j + 1); } else { int j = 1; while(get(leny) * get(j) <= k && j < lenx) ++j; if(get(leny) * get(j) > k) --j; //cout << "proba " << lenx << " " << leny << "\n"; if(j == 1){ // rossz eset int g = 1; while(get(g) <= k) ++g; --g; //cout << "fontos " << g << " " << get(g) << "\n"; for(int i = sy + g; i < maxn; i++) a[sx][i] = a[sx+1][i] = true; for(int i = sy; i < maxn; i++) a[sx+2][i] = true; // for(int i = sy; i < maxn; i++) a[sx][i] = true; solve(k - get(g), sx + 3, sy); return; } if(j < lenx){ for(int i = sy; i < maxn; i++) a[sx + j][i] = true; } solve(k - get(leny) * get(j), sx + j + 1, sy); } } bool test=0; long long vel() { long long maxval=4'000'000'000'000; maxval=100; long long a=rand(), b=rand(), c=rand(), d=rand(), e=rand(); long long prod=abs(a*b*c*d%maxval)+1; return prod; } int main(){ ios_base::sync_with_stdio(false); srand(time(0)); cin.tie(0); long long k; if (!test) cin>>k; else { k=vel(); cout << k << "\n"; //exit(0); } //k=4000000000000; /*maxn=10; k=81;*/ //maxn=10; //k=65; solve(k, 0, 0); cout << maxn << ' ' << maxn << '\n'; for(int i = 0; i < maxn; i++){ for(int j = 0; j < maxn; j++){ cout << (a[i][j] ? '.' : '#'); } cout << '\n'; } //cout << "sikerult\n"; return 0; }