#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; typedef pair<ll,ll> ii; typedef vector<ll> vi; typedef vector<ii> vii; typedef vector<vi> vvi; #define x first #define y second #define pb push_back #define eb emplace_back #define rep(i,a,b) for(auto i = (a); i < (b); ++i) #define REP(i,n) rep(i,0,n) #define sz(v) ((int) (v).size()) #define rs resize #define all(v) begin(v), end(v) vector<vector<bool>> park; ll k; ll maakLaag(ll maxh, ll i){ //Blijf toevoegen ll h; for(h = 0; i * h * (h - 1) / 2 <= k && h <= maxh; h++); h--; //Pas het toe k -= i * h * (h - 1) / 2; for(ll j = 0; j < h; j++) park[i][j] = true; return h; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout << fixed << setprecision(20); cin >> k; park = vector<vector<bool>>(2025, vector<bool>(2025,false)); ll nv; for(nv = 0; nv * nv * (nv - 1) * (nv - 1) <= 4 * k; nv++) ; nv--; for(ll i = 0; i < nv; i++) for(ll j = 0; j < nv; j++) park[i][j] = true; ll maxh = nv; k -= nv * nv * (nv - 1) * (nv - 1) / 4; for(ll i = nv; k > i; i++){ maxh = maakLaag(maxh, i); } //Zet onderaan een grote laag ll nl; for(nl = 0; nl * (nl - 1) / 2 <= k; nl++) ; nl--; k -= (nl * (nl - 1)) / 2; for(ll i = 0; i < nl; i++) for(ll j = 2023; j < 2025; j++) park[i][j] = true; //Zet kleine vierkantjes for(ll i = 2023; k > 0; i -= 5) { k--; park[i][2023] = true; park[i + 1][2023] = true; park[i][2024] = true; park[i + 1][2024] = true; } //Print het cout << 2025 << " " << 2025 << endl; for(ll i = 0; i < 2025; i++) { for(ll j = 0; j < 2025; j++) { if (park[i][j]) cout << "#"; else cout << "."; } cout << endl; } return 0; }