/*
TASK:mushroom
LANG:C++
*/
#include <iostream>
#include <stdio.h>
using namespace std;
int dni[1000], g[200][200], n, m, d, s, neighbour[10];
int sased(int p, int k)
{
    s = 0;
    if (( p + 1 < n )&&(g[p+1][k] == 1))
    {
         s++;
         neighbour[6] = 1;
    }
    if (( k + 1 < m )&&(g[p][k+1] == 1))
    {
         s++;
         neighbour[0] = 1;
    }
    if (( k - 1 >= 0 )&&(g[p][k-1] == 1))
    {
         s++;
         neighbour[4] = 1;
    }
    if (( p - 1 >= 0 )&&(g[p-1][k] == 1))
    {
         s++;
         neighbour[2] = 1;
    }
    if (( p - 1 >= 0 )&&(k-1 >= 0)&&(g[p-1][k-1] == 1))
    {
          s++;
         neighbour[3] = 1;
    }
    if (( p - 1 >= 0 )&&( k + 1 < m)&&(g[p-1][k+1] == 1))
    {
          s++;
         neighbour[1] = 1;
    }
    if (( p + 1 < n )&&(k - 1 >= 0)&&(g[p+1][k-1] == 1))
    {
          s++;
         neighbour[5] = 1;
    }
    if (( p + 1 < n )&&(k + 1 < m )&&(g[p+1][k+1] == 1))
    {
          s++;
         neighbour[7] = 1;
    }
    cout <<endl<< s<<endl;
    return s;
}
int main()
{
    int i, j;
    char c;
    cin >> n >> m >> d;
    for( i = 0; i < n; i++)
         for( j = 0; j < m; j++)
         {
             cin.get(c);
             if( c == 0)
                 g[i][j] = 0;
             else 
                  g[i][j] = 1;
         }
    for ( i = 0; i <= d; i++ )
        cin >> dni[i];
    for (int den = 1; den < d; den++)
    {
        if (( dni[den-1] == dni[den]))
        {
              for( i = 0; i < n; i++)
              {
                   for( j = 0; j < m; j++)
                        if(sased(i, j) > 3)
                             g[i][j] = 0;     
              }
        }
        for ( int t = 0; t < 10; t++ )
            neighbour[t] = 0;
        if ((dni[den-1] == 1)&&(dni[den] == 0))
        {
           for( i = 0; i < n; i++)
                for( j = 0; j < m; j++)
                {
                     for ( int t = 0; t < 10; t++ )
                         neighbour[t] = 0;
                     sased(i, j);
                     if ( neighbour[0] == 0)
                          g[i][j+1] = 1;   
                     if ( neighbour[1] == 0)
                          g[i-1][j+1] = 1;
                     if ( neighbour[2] == 0)
                          g[i-1][j] = 1;
                     if ( neighbour[3] == 0)
                          g[i-1][j-1] = 1;
                     if ( neighbour[4] == 0)
                          g[i][j-1] = 1;
                     if ( neighbour[5] == 0)
                          g[i+1][j-1] = 1;
                     if ( neighbour[6] == 0)
                          g[i+1][j] = 1;
                     if ( neighbour[7] == 0)
                          g[i+1][j+1] = 1;
                }
        }
    }
    cout << endl;
    for( i = 0; i < n; i++)
    {
         for( j = 0; j < m; j++)
             cout << g[i][j];
         cout << endl;
    }
    system("pause");
    return 0;
}
