#include<bits/stdc++.h> #define f first #define s second #define all(x) (x).begin(),(x).end() #define ll long long #define pb push_back #define sz(x) (int)(x).size() using namespace std; int main(){ ll k; cin >> k; const int N=2025; vector<int> dep(N); dep[0]=N; for(int i=1;i<N;i++)dep[i]=1; for(int i=1;i<N-3;i++){ ll sl=i; for(;dep[i]<dep[i-1];){ if(k>=sl){ k-=sl; dep[i]++; sl+=i; } else{ break; } } if(dep[i]==1){ break; } } vector<string> mat(N); string my(N,'.'); for(int i=0;i<N;i++){ mat[i]=my; if(i<N-3) for(int j=0;j<dep[i];j++){ mat[i][j]='#'; } } int j=0; for(int o=N-3;o>=2;o--){ ll my=(ll)o*(o-1)/2; while(my<=k){ k-=my; for(int l=0;l<o;l++){ mat[N-1][j]=mat[N-2][j]='#'; j++; } j++; } } assert(k==0); printf("%i %i\n",N,N); for(int i=0;i<N;i++){ cout << mat[i] << endl; } return 0; vector<pair<ll,pair<int,int>>> ord; ll lim=4e12; for(int n=2;n<=2001;n++){ for(int m=2;m<=2001;m++){ ll num=(ll)n*(n-1)/2*(ll)m*(m-1)/2; if(num<=lim) ord.pb({num,{n,m}}); } } sort(all(ord)); ll mx=0; for(int i=1;i<sz(ord);i++){ ll my=ord[i].f-ord[i-1].f; if(my>mx){ printf("%lld nasao!\n",my); mx=my; } } printf("Last is %lld\n",ord.back().f); }