#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,k,d;
int a[1005][1005],step[1005][1005];
int _x_[1000005],_y_[1000005],_c_[1000005];
int bfs(int x,int y)
{
queue<int>qx,qy;
qx.push(x);
qy.push(y);
step[x][y]=0;
while(!qx.empty())
{
int nx=qx.front(),ny=qy.front();
qx.pop();
qy.pop();
if(a[nx][ny]==1)
return step[nx][ny];
if(nx+1<=n&&!step[nx+1][ny]&&nx+1!=x&&ny!=y&&a[nx+1][ny]!=-1)
{
step[nx+1][ny]=step[nx][ny]+1;
qx.push(nx+1);
qy.push(ny);
}
if(nx-1>=1&&!step[nx-1][ny]&&nx-1!=x&&ny!=y&&a[nx-1][ny]!=-1)
{
step[nx-1][ny]=step[nx][ny]+1;
qx.push(nx-1);
qy.push(ny);
}
if(ny+1<=n&&!step[nx][ny+1]&&nx!=x&&ny+1!=y&&a[nx][ny+1]!=-1)
{
step[nx][ny+1]=step[nx][ny]+1;
qx.push(nx);
qy.push(ny+1);
}
if(ny-1>=1&&!step[nx][ny-1]&&nx!=x&&ny-1!=y&&a[nx][ny-1]!=-1)
{
step[nx][ny-1]=step[nx][ny]+1;
qx.push(nx);
qy.push(ny-1);
}
}
}
signed main()
{
cin>>n>>m>>k>>d;
int s=0;
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
a[x][y]=1;
}
for(int i=1;i<=k;i++)
cin>>_x_[i]>>_y_[i]>>_c_[i];
for(int i=1;i<=d;i++)
{
int x,y;
cin>>x>>y;
a[x][y]=-1;
}
bfs(1,1);
for(int i=1;i<=k;i++)
cout<<s;
}