#include <bits/stdc++.h> #define int long long #define MULTITEST false using namespace std; char a[2025][2025]; int bin(int l,int r,int x,int k){ if(l==r){ return l; } if(l+1==r){ if(r*(r-1)/2*x<=k) return r; return l; } int m = (l+r)/2; if(m*(m-1)/2*x<=k){ return bin(m,r,x,k); } else{ return bin(l,m,x,k); } } void solve () { int k; cin>>k; vector<pair<int,int> >sizes; vector<int>last; int first = 0; while(k){ int h,w,best=0,lasti; for(int i=1;i<=2000;i++){ for(int j=1;j<=2025;j++){ int z = (i-1) * (i-2)/2 * j * (j-1)/2; if(z>k){ continue; } int f = bin(0, j, i, k-z) + 1; int z1 = z + f*(f-1)/2 * (i-1); if(z1<=k&&z1>best&&(!first||i<=5)){ best=z1; h=i; w=j; lasti = f; } } } //cout<<h<<' '<<w<<endl; sizes.push_back({h,w}); last.push_back(lasti); k-=best; first=1; } for(int i=0;i<2025;i++){ for(int j=0;j<2025;j++){ a[i][j]='.'; } } int start=0; int index = 0; for(auto i:sizes){ int x = i.first; int y = i.second; assert(start+x<=2025); for(int j=start;j<start+x;j++){ int lim = y; if(j+1==start+x){ lim=last[index]; } for(int k=0;k<lim;k++){ a[j][k]='#'; } } index += 1; start = start+x+1; } cout<<2025<<' '<<2025<<endl; for(int i=0;i<2025;i++){ for(int j=0;j<2025;j++){ cout<<a[i][j]; } cout<<endl; } } signed main() { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.precision(30); int T = 1; if (MULTITEST) cin >> T; for (int t = 0; t < T; t ++) solve(); }