#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;
ifstream fi("ograzi.in");
ofstream fo("ograzi.out");
int H,W,m,n,y[100010],x[100010],dx[50100],dy[50100];
vector <int> puncte[200000];
void sortq(int l,int r){
int m=x[(l+r)/2],i=l,j=r;
do{
while(m>x[i])i++;
while(m<x[j])j--;
if(i<=j){
swap(x[i],x[j]);
swap(y[i],y[j]);
i++;
j--;
}
}while(i<=j);
if(i<r)sortq(i,r);
if(j>l)sortq(l,j);
}
void create(int l=1,int r=m,int nod=1){
if(l==r){
puncte[nod].push_back(l);
return;
}
create(l,(l+r)/2,nod*2);
create((l+r)/2+1,r,nod*2+1);
int i=0,j=0;
while(i<puncte[nod*2].size() || j<puncte[nod*2+1].size()){
if(i==puncte[nod*2].size()){
puncte[nod].push_back(puncte[nod*2+1][j]);
j++;
}else if(j==puncte[nod*2+1].size()){
puncte[nod].push_back(puncte[nod*2][i]);
i++;
}else{
if(y[puncte[nod*2][i]]<y[puncte[nod*2+1][j]]){
puncte[nod].push_back(puncte[nod*2][i]);
i++;
}else{
puncte[nod].push_back(puncte[nod*2+1][j]);
j++;
}
}
}
}
int lbsearch(int v,int l=1,int r=m){
if(x[l]>=v)return l;
if(x[r]<=v)return -1;
if(r==l)return l;
int mij = (l+r)/2;
if(x[mij]>=v)return lbsearch(v,l,mij);
return lbsearch(v,mij+1,r);
}
int rbsearch(int v,int l=1,int r=m){
if(x[l]>=v)return -1;
if(x[r]<=v)return r;
if(r==l)return l;
int mij = (l+r)/2;
if(x[mij+1]<=v)return rbsearch(v,mij+1,r);
return rbsearch(v,l,mij);
}
int query(int ymin,int ymax,int a,int b,int l=1,int r=m,int nod =1){
int sol = 0;
if(a<=l && b>=r){
for(int i=0;i<puncte[nod].size();i++)
if(ymin<=y[puncte[nod][i]] && ymax>=y[puncte[nod][i]])sol++;
return sol;
}
int mij = (r+l)/2;
if(b>=mij+1)sol+=query(ymin,ymax,a,b,mij+1,r,nod*2+1);
if(a<=mij)sol+=query(ymin,ymax,a,b,l,mij,nod*2);
return sol;
}
int main(){
fi>>n>>m>>W>>H;
for(int i=1;i<=n;i++)fi>>dx[i]>>dy[i];
for(int i=1;i<=m;i++)fi>>x[i]>>y[i];
sortq(1,m);
for(int i=1;i<=m && 0;i++)fo<<i<<"- "<<x[i]<<" "<<y[i]<<endl;
create();
for(int i=1;i<=7 && 0;i++){
fo<<i<<"| ";
for(int j=0;j<puncte[i].size();j++)fo<<puncte[i][j]<<" ";
fo<<endl;
}
int sol = 0,l,r;
for(int i=1;i<=n ;i++){
l = lbsearch(dx[i]);
r = rbsearch(dx[i]+W);
// fo<<l<<" "<<r<<" "<<endl;
if(l!=-1 && r!=-1) sol += query(dy[i],dy[i]+H,l,r);
// fo<<sol<<" "<<dy[i]<<" "<<dy[i]+H<<" "<<endl;
}
// fo<<rbsearch(5);
fo<<sol;
}