#include using namespace std; #define rep(i, a, b) for (int i =a; i < (b); ++i) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() #define fo(i, n) rep(i, 0, n) #define F first #define S second #define MP make_pair #define PB push_back typedef long long ll; typedef vector vi; typedef pair pii; typedef vector> vpii; typedef vector> vvi; typedef vector vll; typedef pair pll; typedef vector> vpll; typedef vector> vvll; int load() { int n; cin >> n; vector a(n); fo(i, n) cin >> a[i]; int start = 0; fo(i, n) { if (a[0][i] == '#') start = i; } int val = 1; rep(i, 1, n) { val *= 2; if (start > 0 && a[i][start-1] == '#') { val++; start--; } else { start++; } } return val; } void print(int x) { int log = 0; while (x >= (2 << log)) { log++; } cout << 1 + log << endl; int mi=0, mx = 0; vi res = {0}; while (x != 1) { if (x % 2 == 1) res.PB(res.back()-1); else res.PB(res.back()+1); x /= 2; mi = min(mi, res.back()); mx = max(mx, res.back()); } for (auto x: res) { fo(i, x - mi) cout << '.'; cout << '#'; fo(i, mx - x) cout << '.'; cout << '\n'; } } signed main() { cin.tie(0)->sync_with_stdio(0); int x = load(); int y = load(); print(x+y); }