#include <iostream>
#include <string>
#include <sstream>
#include <complex>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <memory>
#include <functional>
#include <utility>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <climits>
#include <cfloat>
#include <cstring>
 
#define REP(i,b,n) for(int i=b;i<n;i++)
#define REPR(i,b,n) for(int i=n-1;i>=b;i--)
#define CLR(mat) memset(mat, 0, sizeof(mat))
#define NCLR(mat) memset(mat, -1, sizeof(mat))
#define ALL(c) (c).begin(), (c).end()
#define RALL(c) (c).rbegin(), (c).rend()
#define EACH(i, c) for(typeof((c).begin()) i = (c).begin(); i != (c).end(); ++i)
#define EXIST(s, e) ((s).find(e) != (s).end())
#define BIT(n, b) ((n>>b) & 1)
#define PB push_back
#define MP make_pair
 
using namespace std;
 
static const double PI = acos(-1.0);
static const double EPS = 1e-9;
typedef long long ll;
typedef pair<int, int> pii;
 
int dx[]={-1, 0, 1, -1, 0, 1, -1, 0, 1, -1, 0, 1, -1, 1, -1, 0, 1, -1, 0, 1, -1, 0, 1, -1, 0, 1},
    dy[]={-1, -1, -1, 0, 0, 0, 1, 1, 1, -1, -1, -1, 0, 0, 1, 1, 1, -1, -1, -1, 0, 0, 0, 1, 1, 1},
    dz[]={-1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1};
 
int cell[2][5][5][5];
int a[32], b[32];
int n, m1, m2;
int cas = 1;
 
inline bool check(int t){
    return 0 <= t && t < 5;
}
 
void count(int fr, int x, int y, int z){
     
    int t, cnt=0, nx, ny, nz;
     
    for(t=0; t<26; ++t){
     
        nx=x+dx[t];
        ny=y+dy[t];
        nz=z+dz[t];
         
        if(check(nx)&&check(ny)&&check(nz)&&
                cell[fr][x+dx[t]][y+dy[t]][z+dz[t]])
            cnt++;
    }
     
    if(!cell[fr][x][y][z] && a[cnt] )
        cell[(fr+1)%2][x][y][z] = 1;
    else if(cell[fr][x][y][z] && !b[cnt])
        cell[(fr+1)%2][x][y][z] = 0;
    else
        cell[(fr+1)%2][x][y][z] = cell[fr%2][x][y][z];
     
    return;
}       
 
void solve(){
     
    int day=0, x, y, z, rcv;
 
    while(day<n){
         
        for(z=0; z<5; ++z)
            for(y=0; y<5; ++y)
                for(x=0; x<5; ++x)
                    count(day%2, x, y, z);
         
        day++;
    }
     
    printf("Case %d:\n", cas);
     
    for(z=0; z<5; ++z){
        for(y=0; y<5; ++y){
            for(x=0; x<5; ++x){
                printf("%d", cell[day%2][x][y][z]);
            }
             
            printf("\n");
        }
         
        if(z!=4)
            printf("\n");
    }
     
    return;
}
                 
     
int main(){
     
    int tmp;
    char str[7];
     
    while(scanf("%d", &n), n){
         
        if(cas != 1)
            printf("\n");
         
        CLR(a);
        CLR(b);
        CLR(cell);
         
        for(int z=0; z<5; ++z){
            for(int y=0; y<5; ++y){
             
                scanf("%s", str);
                 
                for(int x=0; x<5; ++x){
                    cell[0][x][y][z] = (str[x]=='0'?0:1);
                }
            }
        }
 
        scanf("%d", &m1);
         
        for(int i=0; i<m1; ++i){
            scanf("%d", &tmp);
            a[tmp] = 1;
        }
         
        scanf("%d", &m2);
         
        for(int i=0; i<m2; ++i){
            scanf("%d", &tmp);
            b[tmp] = 1;
        }
         
        solve();
        cas++;
    }
     
    return 0;   
}

Measured memory_bytes: 1192