#include using namespace std; #define ll long long int numb(vector &rs) { int num = 1; int start = 0; int m = rs[0].size(); for (int i = 0; i < (int)rs[0].size(); i++) { if (rs[0][i] == '#') { start = i; break; } } for (int i = 0; i < (int)rs.size() - 1; i++) { int left = start - 1, right = start + 1; if (left >= 0 && rs[i+1][left] == '#') { num = num * 2 + 1; start = left; } else if (right < m && rs[i+1][right] == '#') { num = num * 2; start = right; } } return num; } int main() { int n; cin >> n; vector rs1(n); for (int i = 0; i < n; i++) { cin >> rs1[i]; } int m; cin >> m; vector rs2(m); for (int i = 0; i < m; i++) { cin >> rs2[i]; } int a = numb(rs1); int b = numb(rs2); int ab = a + b; pair start {0, 0}; vector> pts {start}; while (ab != 1) { if (ab % 2 == 0) { start = {start.first - 1, start.second + 1}; } else { start = {start.first + 1, start.second + 1}; } pts.emplace_back(start); ab /= 2; } int mi = 1e9; int ma = -1e9; for (int i = 0; i < pts.size(); i++) { mi = min(mi, pts[i].first); ma = max(ma, pts[i].first); } ma = ma - mi; for (int i = 0; i < pts.size(); i++) { pts[i] = {pts[i].first - mi, pts[i].second}; } cout << pts.size() << '\n'; for (int i = pts.size()-1; i >= 0; i--) { for (int j = 0; j < pts[i].first; j++) { cout << '.'; } cout << '#'; for (int j = pts[i].first + 1; j <= ma; j++) { cout << '.'; } cout << '\n'; } cout << "hello world"; }