#include <bits/stdc++.h>
#define int int64_t
using namespace std;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<bool> vb;
typedef vector<vb> vvb;
typedef pair<int, int> ii;
#define loop(i,s,e) for(int i=s; i<e; i++)
#define x first
#define y second
#define all(a) a.begin(),a.end()
#define pb push_back


const int N = 2025, MAX = 2001;
//const int N = 50, MAX = 30;
int32_t main() {
    ios_base::sync_with_stdio(false);
    int k; cin>>k;
    vvb a(N, vb(N));
    vi choose2(N+10);
    loop(i,1,choose2.size()) choose2[i] = (((long long)i) * (i-1) ) / 2;
    auto solve = [&]() {
        if (k == 0) return ;
        int n = 1;
        while(choose2[n+1] * choose2[n+1] <= k) n++;
        int kk = k;
        k = k - (choose2[n] * choose2[n]);
        loop(i,0,n) loop(j,0,n) a[i][j] = 1;
        if (n <= k) {
            a[0][n] = a[n][0] = 1;
            loop(i,1,n) {
                if (i * n <= k) {
                    k -= i * n;
                    a[i][n] = 1;
                }
            }
            loop(j,1,n) {
                if (j * n <= k) {
                    k -= j * n;
                    a[n][j] = 1;
                }
            }
            n++; // border this now
        }
        n++; // border this with zero
        if (k == 0) return ;
        int X = n, Y = 0;
        while (k) {
            int h = 1, w = 1;
            while(choose2[h+1] <= k && n + h + 1 <= N) {
                h++;
            }
            while (choose2[h] * choose2[w+1] <= k) w++;
            k -= choose2[h] * choose2[w];
            loop(i,0,h) loop(j,0,w) {
                a[i+X][j+Y] = 1;
            }
            Y += w+1;
        }
    };
    solve();
    assert(k == 0);
    cout << N << " "<<N<<endl;
    loop(i,0,N) {
        loop(j,0,N) cout<<(a[i][j]?"#":".");
        cout << endl;
    }
    return 0;
}