#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;
}
bool f(int h, int w, int k) {
    //cerr<<h<<' '<<w<<' '<<k<<endl;
    auto [hh,ww] = find(h,w,k);
    if(siz(hh,ww)==k) {
        for(int i=h-hh; i<h; ++i) {
            for(int j=w-ww; j<w; ++j) {
                ans[i][j]='.';
            }
        }
        return 1;
    } else if(hh>=h-1 || ww>=w-1) {
        auto [hh2,ww2] = find(h-1,w-1,k);
        hh=hh2;
        ww=ww2;
    }
    if(hh==-1) return 0;
    for(int i=h-hh; i<h; ++i) {
        for(int j=w-ww; j<w; ++j) {
            ans[i][j]='.';
        }
    }
    if(h-hh-1>w-ww-1) {
        h-=hh+1; // use the last hh+1 rows
    } else {
        w-=ww+1;
    }
    k-=siz(hh,ww);
    if(k==0) return 1;
    return f(h,w,k);
}

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]='#';
        }
    }
    int k;
    cin>>k;
    if(k==0) {
        cout<<"1 1\n#\n";
        return 0;
    }
    cerr<<f(HW,HW,k)<<'\n';
    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;
}