#include #include using namespace std; size_t get_num() { size_t rows; cin >> rows; string str; size_t index = -1; size_t number = 1; for (size_t i = 0; i < rows; i++) { cin >> str; size_t current = 0; for (; current < str.size(); current++) { if (str[current] == '#') { break; } } if (index == (size_t)-1) { index = current; continue; } if (current < index) number = 2 * number + 1; else number *= 2; index = current; } return number; } void print_num(size_t num) { vector pos = vector(); int minp = 0; int maxp = 0; int index = 0; pos.push_back(index); for(;num != 1; num /= 2) { if (num % 2 == 0) { index--; } else { index++; } pos.push_back(index); minp = min(minp, index); maxp = max(maxp, index); } int size = maxp - minp + 1; // cout << "width: " << size << endl; cout << pos.size() << endl; for (size_t i = 0; i < pos.size(); i++) { size_t posi = pos.size() - i - 1; int index = -minp + pos[posi]; for (int w = 0; w < size; w++) { if (w == index) cout << '#'; else cout << '.'; } cout << endl; } } int main() { size_t n1 = get_num(); size_t n2 = get_num(); size_t res = n1 + n2; print_num(res); return 0; }