/*
TASK:mushroom
LANG:C++
*/
#include<iostream>
using namespace std;
int a[256][256];
int main()
{
 int n,m,d,i,i2,i3,t,w,br,i5,i6;
 char c;
 cin>>n>>m>>d;
 for(i=1;i<=n;i++)
  for(i2=1;i2<=m;i2++)
  {
   cin>>c;
   a[i][i2]=c-'0';
  }
 cin>>t;
 for(i=1;i<d;i++)
 {
  cin>>w;
  if(w==t)
  {
   for(i2=1;i2<=n;i2++)
    for(i3=1;i3<=m;i3++)
     if(a[i2][i3])
     {
      br=0;
      if(a[i2][i3+1])br++;
      if(a[i2][i3-1])br++;
      if(a[i2+1][i3])br++;
      if(a[i2-1][i3])br++;
      if(a[i2+1][i3+1])br++;
      if(a[i2-1][i3-1])br++;
      if(a[i2+1][i3-1])br++;
      if(a[i2-1][i3+1])br++;
      if(br>3)a[i2][i3]=2;
     }
   for(i2=1;i2<=n;i2++)
    for(i3=1;i3<=m;i3++)
     if(a[i2][i3]==2)a[i2][i3]=0;
  }
  if(t&&!w)
  {
   for(i2=1;i2<=n;i2++)
    for(i3=1;i3<=m;i3++)
    {
     if(a[i2][i3]==1)
     {
      br=0;
      if(a[i2-1][i3]!=1&&i2-1>0)
      {
       a[i2-1][i3]=2;
       br++;
      }
      if(a[i2-1][i3-1]!=1&&i2-1>0&&i3-1>0)
      {
       a[i2-1][i3-1]=2;
       br++;
      }
      if(a[i2][i3-1]!=1&&i3-1>0)
      {
       a[i2][i3-1]=2;
       br++;
      }
      if(br<3)
      {
       if(a[i2+1][i3-1]!=1&&i2+1<=n&&i3-1>0)
       {
        a[i2+1][i3-1]=2;
        br++;
       }
       if(br<3)
       {
        if(a[i2+1][i3]!=1&&i2+1<=n)
        {
         a[i2+1][i3]=2;
         br++;
        }
        if(br<3)
        {
         if(a[i2+1][i3+1]!=1&&i2+1<=n&&i3+1<=m)
         {
          a[i2+1][i3+1]=2;
          br++;
         }
         if(br<3)
         {
          if(!a[i2][i3+1]&&i3+1<=m)
          {
           a[i2][i3+1]=2;
           br++;
          }
          if(br<3)
           if(!a[i2-1][i3+1]&&i2-1>0&&i3+1<=m)
           {
            a[i2-1][i3+1]=2;
            br++;
           }
         }
        }
       }
      }
     }
    }
   for(i2=1;i2<=n;i2++)
    for(i3=1;i3<=m;i3++)
     if(a[i2][i3]==2)a[i2][i3]=1;
  }
  t=w;
 }
 for(i=1;i<=n;i++)
 {
  for(i2=1;i2<=m;i2++)cout<<a[i][i2];
  cout<<endl;
 }
 return 0;
}
