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