#include <iostream>
using namespace std;
int a[30002][32];
int nad[30002][32];
int pridv[32];
int main ()
{
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    int n, m;
    cin >> n >> m;
    for(int i = 1 ; i <= n ; ++i)
    {
        for(int j = 1 ; j <= m ; ++j)
        {
            char c;
            cin >> c;
            if(c == '.')
                a[i][j] = 1;
        }
    }
    for(int i = n ; i > 0 ; --i)
    {
        for(int j = m ; j > 0 ; --j)
        {
            if(!a[i][j])
                nad[i][j] = -1;
            else{
                if(i == n)nad[i][j] = 0;
                else nad[i][j] = nad[i+1][j]+1;
            }
        }
    }
    int k, ky;
    cin >> k;
    for(int i = 0 ; i < k ; ++i)
    {
        cin >> ky;
        int kx = 1;
        bool bl = 1;
        while(a[kx+1][ky] && bl)
        {

            kx += nad[kx][ky];
            if(a[kx+1][ky] == 2){
                if(a[kx+1][ky-1] == 1 && a[kx][ky-1] == 1){
                    ++kx;
                    --ky;
                }else{
                    if(a[kx+1][ky+1] == 1 && a[kx][ky+1] == 1){
                        ++kx;
                        ++ky;
                    }else{
                        bl = 0;
                    }
                }
            }
        }
        a[kx][ky] = 2;
        for(int i = kx ; i >= 0 ; --i)
            --nad[i][ky];
    }
    for(int i = 1 ; i <= n ; ++i)
    {
        for(int j = 1; j <= m ; ++j){
            if(!a[i][j])cout << 'X';
            else if(a[i][j] == 1)cout << '.';
            else cout << 'O';
        }
        cout << '\n';
    }
    return 0;
}

