#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;
}