#ifdef ONLINE_JUDGE #include #else #include #include #include #include #include #include #include #include #include #include #include #include #include #endif using namespace std; // lambda : [] (int a, int b) -> bool { body return } // string r_str = R"(raw string)" #define mp make_pair #define mt make_tuple #define eb emplace_back #define pb push_back #define LL long long #define ULL unsigned long long #define BASE 73 #define NMAX 10000 #define NMAX2 20001 #define MOD1 1000000007 #define ALL(V) (V).begin(), (V).end() #define ALLR(V) (V).rbegin(), (V).rend() #define CRLINE Duxar(__LINE__); #define SHOWME(x) cerr << __LINE__ << ": " << #x << " = " << (x) << endl; #define ENTER putchar('\n'); int dx4[] = {-1, 0, 1, 0}; int dy4[] = {0, 1, 0, -1}; int dx6[] = {-1, -1, 0, 1, 1, 1, 0, -1}; int dy6[] = {0, 1, 1, 1, 0, -1, -1, -1}; void Duxar(int _this_line) { #ifndef ONLINE_JUDGE printf("\n . . . . . . . . . . . . . Passed line - %d\n", _this_line); #endif } template void ReadNo(T &_value) { T _sign = 1; char ch; _value = 0; while(!isdigit(ch = getchar())) { (ch == '-') && (_sign = -1); } do { _value = _value * 10 + (ch - '0'); } while(isdigit(ch = getchar())); _value *= _sign; } template void AddNr(T &a, T b) { a = a + b; while (a >= MOD1) { a -= MOD1; } while (a < 0) { a += MOD1; } } int N, M, H; vector matUp, xorin, xorana; vector > matVal; int main(){ #ifdef INFOARENA freopen("pinball.in", "r", stdin); freopen("pinball.out", "w", stdout); #else #ifndef ONLINE_JUDGE #endif #endif int i, j; cin >> N >> M >> H; matVal.resize(N + 1, vector (M + 1)); matUp.resize(N); for (i = 0; i < N; ++i) { cin >> matUp[i]; } xorin.resize(H); for (i = 0; i < H; ++i) { cin >> xorin[i]; } for (i = 0; i < H; ++i) { for (j = 0; j < M; ++j) { matVal[N][j] += (xorin[i][j] == '#'); } } xorana.resize(H); for (i = 0; i < H; ++i) { cin >> xorana[i]; } for (i = 0; i < H; ++i) { for (j = 0; j < N; ++j) { matVal[N - j - 1][M] += (xorana[i][j] == '#'); } } for (i = N - 1; i >= 0; --i) { for (j = M - 1; j >= 0; --j) { if (matUp[i][j] == '#') { matVal[i][j] = min(matVal[N][j], matVal[i][M]); } } } for (i = 0; i < N; ++i) { for (j = 0; j < M; ++j) { if (matVal[i][j] != 0) { cout << matVal[i][j]; } else { cout << '.'; } } cout << '\n'; } return 0; }