#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,m,q,r,k,cnt=1;
int a[3001][3001];
int b[3001][3001];
void pt();
bool check(int x,int y) {
if(a[x][y]>0||a[x][y]==-1) return false;
int xx[]={0,0,-1,1},yy[]={-1,1,0,0};
bool flag=0,flag2=0;
for(int i=0;i<4;i++) {
int nx=x+xx[i];
int ny=y+yy[i];
if(nx<1||nx>n||ny<1||ny>m) continue;
if(a[nx][ny]==-1) flag=1;
else if(a[nx][ny]>0) flag2=1;
}
if(flag&&flag2) return true;
return false;
}
bool check2(int x,int y) {
bool flag=0;
int xx[]={0,0,-1,1},yy[]={-1,1,0,0};
for(int i=0;i<4;i++) {
int nx=x+xx[i];
int ny=y+yy[i];
if(nx<1||nx>n||ny<1||ny>m) continue;
if(a[nx][ny]>0) flag=1;
}
return flag;
}
bool update(int t) {
bool did_update=0;
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
b[i][j]=a[i][j];
}
}
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
if(check(i,j)) b[i][j]=t,did_update=1;
if(a[i][j]>0&&t-a[i][j]>=k) {
if(!check2(i,j)) {
b[i][j]=0;
did_update=1;
}
}
}
}
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
a[i][j]=b[i][j];
}
}
return did_update;
}
signed main() {
memset(a,0,sizeof(a));
cin>>n>>m>>q>>r>>k;
for(int i=1,x1,y1,x2,y2;i<=q;i++) {
cin>>x1>>y1>>x2>>y2;
if(x1>x2) swap(x1,x2);
if(y1>y2) swap(y1,y2);
for(int r=x1;r<=x2;r++)
for(int c=y1;c<=y2;c++) a[r][c]=-1;
}
for(int i=1,t,x,y;i<=r;i++) {
cin>>t>>x>>y;
for(int j=cnt;j<t;j++) update(j);
a[x][y]=t;
cnt=t;
}
for(int i=cnt,last=0;last<100||i<=cnt+k+2;i++) {
if(!update(i)) last++;
else last=0;
}
int ans=0;
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
if(a[i][j]>0) {
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}
void pt() {
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
cout<<" "<<a[i][j];
}
cout<<endl;
}
cout<<endl;
return ;
}