#include <bits/stdc++.h> #define int int64_t using namespace std; typedef vector<int> vi; typedef vector<vi> vvi; typedef vector<bool> vb; typedef vector<vb> vvb; typedef pair<int, int> ii; #define loop(i,s,e) for(int i=s; i<e; i++) #define x first #define y second #define all(a) a.begin(),a.end() #define pb push_back const int N = 2025, MAX = 2001; //const int N = 50, MAX = 30; int32_t main() { ios_base::sync_with_stdio(false); int k; cin>>k; vvb a(N, vb(N)); vi choose2(N+10); loop(i,1,choose2.size()) choose2[i] = (((long long)i) * (i-1) ) / 2; auto solve = [&]() { if (k == 0) return ; int n = 1; while(choose2[n+1] * choose2[n+1] <= k) n++; int kk = k; k = k - (choose2[n] * choose2[n]); loop(i,0,n) loop(j,0,n) a[i][j] = 1; if (n <= k) { a[0][n] = a[n][0] = 1; loop(i,1,n) { if (i * n <= k) { k -= i * n; a[i][n] = 1; } } loop(j,1,n) { if (j * n <= k) { k -= j * n; a[n][j] = 1; } } n++; // border this now } n++; // border this with zero if (k == 0) return ; int X = n, Y = 0; while (k) { int h = 1, w = 1; while(choose2[h+1] <= k && n + h + 1 <= N) { h++; } while (choose2[h] * choose2[w+1] <= k) w++; k -= choose2[h] * choose2[w]; loop(i,0,h) loop(j,0,w) { a[i+X][j+Y] = 1; } Y += w+1; } }; solve(); assert(k == 0); cout << N << " "<<N<<endl; loop(i,0,N) { loop(j,0,N) cout<<(a[i][j]?"#":"."); cout << endl; } return 0; }