#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll N=2025,M=N; const ll NMAX=N+5; char ans[NMAX][NMAX]; void solve(ll offset, ll k){ ll n=N-offset; assert(k<=n*(n-1)*n*(n-1)/4); if(k<n*(n-1)-1){ ll i=offset,j=offset; while(k>0){ ll deltai; assert(j+1<M); for(deltai=2;i+deltai<=N && deltai*(deltai+1)/2<=k;deltai++); k-=deltai*(deltai-1)/2; for(ll i2=i;i2<i+deltai;i2++) ans[i2][j]=ans[i2][j+1]='#'; j+=3; } return; } else{ //cerr<<"here\n"; ll Ans=0,newk=0; for(ll deltah=2;;deltah++){ ll p1=n*(n-1)/2,p2=deltah*(deltah-1)/2; if(p2*p1*2-p2*p2<=k) Ans=deltah,newk=k-(p2*p1*2-p2*p2); else break; } for(ll i=0;i<n;i++){ for(ll j=0;j<n;j++){ if(i<Ans || j<Ans){ ans[i+offset][j+offset]='#'; } } } solve(offset+Ans+1,newk); } } int main() { ios_base::sync_with_stdio(false); cin.tie(0); ll k; cin>>k; for(ll i=0;i<N;i++) for(ll j=0;j<M;j++) ans[i][j]='.'; solve(0,k); for(ll i=0;i<N;i++){ for(ll j=0;j<M;j++) cout<<ans[i][j]; cout<<'\n'; } return 0; }