#include using namespace std; #define ll long long #define vll vector #define vvll vector #define vpll vector> #define pll pair #define rep(i, n) for(ll i = 0; i < (ll)n; i++) #define rep1(i, n) for(ll i = 1; i <= (ll)n; i++) #define fi first #define se second #define debug false void read(vector& out){ ll N; cin >> N; out = vector(N); rep(i, N){ cin >> out[i]; } } ll decode(const vector& in){ ll j = 0; while(in[0][j] == '.'){ j++; } ll N = (ll)in.size(); ll M = (ll)in[0].size(); ll rs = 1; rep(i, N-1){ if(j == M-1){ rs = 2 * rs + 1; j = M - 2; continue; } if(j == 0){ rs = 2 * rs; j = 1; continue; } if(in[i+1][j-1] == '#'){ rs = 2 * rs + 1; j--; continue; } rs = 2 * rs; j++; } return rs; } void encode(vector& out, const ll in){ ll j = 0; ll left = 0; ll right = 0; ll steps = 0; ll x = in; while(x > 1){ if(x % 2 == 0){ j--; if(j < left) left = j; } else { j++; if(j > right) right = j; } x = x / 2; steps++; } out = vector(steps+1); x = in; ll N = steps + 1; ll i = N - 1; ll M = right - left + 1; j = M - right - 1; rep(l, M){ out[i] += '.'; } out[i][j] = '#'; i--; while(x > 1){ if(x % 2 == 0){ j--; if(j < left) left = j; } else { j++; if(j > right) right = j; } x = x / 2; rep(l, M){ out[i] += '.'; } out[i][j] = '#'; i--; } } int main() { // freopen("./in.txt", "r", stdin); // freopen("./out.txt", "w", stdout); // cout << "COMMENT THIS OUT" << endl; cin.tie(nullptr); cout.tie(nullptr); ios_base::sync_with_stdio(false); vector a, b; read(a); read(b); ll adec = decode(a); ll bdec = decode(b); // cout << adec << " " << bdec << endl; vector rs; encode(rs, adec + bdec); cout << (ll)rs.size() << endl; rep(i, rs.size()){ cout << rs[i] << endl; } return 0; }