#include <bits/stdc++.h>
using namespace std;
#define int long long
struct Sticker{int x1,y1,x2,y2,p,xt,yt;}s[505];
bool cmp(Sticker a,Sticker b){return a.p>b.p;}
signed main(){
int n,m,c,k,pa[505][505],nvd[505][505];
cin>>n>>m>>c>>k;
for(int i=0;i<k;i++)cin>>s[i].x1>>s[i].y1>>s[i].x2>>s[i].y2>>s[i].p>>s[i].xt>>s[i].yt;
for(int i=0;i<c;i++)for(int j=0;j<c;j++)cin>>pa[i][j];
for(int i=0;i<n;i++)for(int j=0;j<m;j++)nvd[i][j]=-1;
sort(s,s+k,cmp);
for(int i=0;i<k;i++){
for(int x=s[i].x1-1;x<s[i].x2;x++){
for(int y=s[i].y1-1;y<s[i].y2;y++){
int nx=x-s[i].x1+1;
int ny=y-s[i].y1+1;
if(nvd[x][y]==-1 || nvd[x][y]<s[i].p)nvd[x][y]=pa[s[i].xt-1+nx][s[i].yt-1+ny];
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++)cout<<nvd[i][j]<<" ";
cout<<endl;
}
}