#include <bits/stdc++.h> using namespace std; #define int int64_t const int HW = 2025; char ans[HW][HW]; int siz(int h, int w) { return h*(h-1)*w*(w-1)/4; } array<int,2> find(int h, int w, int k) { array<int,2> ans={-1,-1}; int bd=k; for(int hh=2; hh<=h; ++hh) { for(int ww=2; ww<=w; ++ww) { int t = siz(hh,ww); if(t>k) break; if(k-t>=0 && bd>k-t) { ans={hh,ww}; bd=k-t; } } } return ans; } int k; void f(int x0, int y0, int h, int w) { //cerr<<h<<' '<<w<<' '<<k<<endl; if(k==0) return; auto [hh,ww] = find(h,w,k); if(hh<=1 || ww<=1) return; k-=siz(hh,ww); for(int y=y0; y<y0+hh; ++y) { for(int x=x0; x<x0+ww; ++x) { ans[y][x]='#'; } } if(siz(h-hh-1,w)>siz(w-ww-1,h)) { f(x0,y0+hh+1,h-hh-1,w); f(x0+ww+1,y0,hh,w-ww-1); } else { f(x0+ww+1,y0,h,w-ww-1); f(x0,y0+hh+1,h-hh-1,ww); } } signed main() { cin.tie(0); ios_base::sync_with_stdio(0); for(int i=0; i<HW; ++i) { for(int j=0; j<HW; ++j) { ans[i][j]='.'; } } /*for(int k=3999999989271; k; --k) { if(k%65536==0)cerr<<"trying "<<k<<endl; if(!f(HW,HW,k)) { cerr<<"found wrong "<<k<<endl; return 0; } }*/ cin>>k; if(k==0) { cout<<"1 1\n.\n"; return 0; } f(0,0,HW,HW); cout<<HW<<' '<<HW<<'\n'; for(int i=0; i<HW; ++i) { for(int j=0; j<HW; ++j) { cout<<ans[i][j]; } cout<<'\n'; } return 0; }