#include<bits/stdc++.h>
#define pii pair<int,int>
#define mp make_pair
using namespace std;
int n,f[105][105],seat[105],dis[105][105][105],num[105][105],p,r[105],c[105],sp[105],ca[105][105],used[105],out1[105],out2[105],out3[105];
int x[5]={0,0,0,1,-1};
int y[5]={0,1,-1,0,0};
queue<pii> q;
vector<int>G[105];
void bfs(int d,int a,int b){
q.push(mp(a,b));
dis[d][a][b]=0;
while(!q.empty()){
auto ed=q.front();
q.pop();
int xa=ed.first,xb=ed.second;
for(int i=1;i<=4;i++){
int na=xa+x[i],nb=xb+y[i];
if(na>0&&nb>0&&na<=n&&nb<=n&&dis[d][na][nb]>dis[d][xa][xb]+1&&!f[na][nb]){
dis[d][na][nb]=dis[d][xa][xb]+1;
q.push(mp(na,nb));
}
}
}
}
int dfs(int u){
for(auto v:G[u]){
if(used[v])continue;
used[v]=1;
if(!seat[v]||dfs(v)){
seat[v]=u;
return 1;
}
}
return 0;
}
int main(){
cin>>n;
int cnt=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
char s;
cin>>s;
if(s=='*')f[i][j]=1;
num[i][j]=++cnt;
}
}
cin>>p;
for(int i=1;i<=p;i++){
cin>>r[i]>>c[i];
}
memset(dis,0x3f,sizeof(dis));
for(int i=1;i<=p;i++){
bfs(i,r[i],c[i]);
}
for(int i=1;i<=p;i++){
cin>>sp[i];
}
int z;
cin>>z;
for(int i=1;i<=z;i++){
int t1,x1,y1,j1;
cin>>t1>>x1>>y1>>j1;
for(int j=1;j<=p;j++){
if(dis[j][x1][y1]>sp[j]*t1)ca[j1][j]=1;
}
}
for(int i=1;i<=p;i++){
for(int j=1;j<=p;j++){
if(ca[i][j]==0)G[i].push_back(j);
}
}
for(int i=1;i<=p;i++){
memset(used,0,sizeof(used));
dfs(i);
}
for(int i=1;i<=p;i++){
out1[seat[i]]=i,out2[seat[i]]=r[i],out3[seat[i]]=c[i];
}
for(int i=1;i<=p;i++){
cout<<seat[out1[i]]<<' '<<out2[i]<<' '<<out3[i]<<endl;
}
return 0;
}```