#include "bits/stdc++.h" using namespace std; #define int long long #define ld long double #define ll long long #define st first #define nd second #define pb push_back #define eb emplace_back #define sz(x) (int)(x).size() #define all(x) begin(x),end(x) #define FOR(i,l,r) for(int i = (l); i <= (r); i++) #define ROF(i,r,l) for (int i = (r); i >= (l); i--) auto& operator<<(auto&o, pair<auto,auto>p) { return o << "(" << p.st << ", " << p.nd << ")"; } auto operator<<(auto&o, auto x)->decltype(end(x), o) { o << "{"; int i =0; for (auto e : x) o << ","+!i++ << e; return o << "}"; } #ifdef LOCAL #define debug(x...) cerr << "[" #x "]: ", [](auto...$) { \ ((cerr << $ << "; "), ...) << endl; }(x) #else #define debug(...) {} #endif #define rep(i, a, b) for (int i = (a); i < (b); i++) using pii = pair<int, int>; using vi = vector<int>; const int inf = 1e9 + 7; char g[2030][2030]; int ile[2030][2030]; signed main() { cin.tie(0)->sync_with_stdio(0); srand(time(NULL)); int k,n=2025; cin>>k; FOR(i,2,n) { FOR(j,2,n) { ile[i][j]=ile[i-1][j]+ile[i][j-1]-ile[i-1][j-1]+(i-1)*(j-1); } } FOR(i,1,n) FOR(j,1,n) g[i][j]='.'; int x=1,y=1; while(k>0) { FOR(i,x,n) g[i][y]='#'; FOR(j,y,n) g[x][j]='#'; if(x>y) { FOR(i,x+1,n) { bool f=0; FOR(j,y+1,n) { if((i-x)*(j-y)>k) { f=1; break; } else { g[i][j]='#'; k-=(i-x)*(j-y); } } if(f) { x=i+2; break; } } } else { FOR(j,y+1,n) { bool f=0; FOR(i,x+1,n) { if((i-x)*(j-y)>k) { f=1; break; } else { g[i][j]='#'; k-=(i-x)*(j-y); } } if(f) { y=j+2; break; } } } } debug(k); /*int ans=0; FOR(x1,1,n) { FOR(y1,1,n) { FOR(x2,x1+1,n) { FOR(y2,y1+1,n) { bool is=1; FOR(i,x1,x2) is&=(g[i][y1]=='#'); FOR(i,x1,x2) is&=(g[i][y2]=='#'); FOR(i,y1,y2) is&=(g[x1][i]=='#'); FOR(i,y1,y2) is&=(g[x2][i]=='#'); ans+=is; } } } }*/ cout<<n<<" "<<n<<endl; FOR(i,1,n) { FOR(j,1,n) cout<<g[i][j]; cout<<endl; } return 0; }