#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+10;
int n,m,cant[maxn][maxn][4],vis[maxn][maxn],cowcnt[maxn][maxn],xmax,ymax,ans;
map<int,int> m1,m2;
int dx[]={0,0,1,0,-1};
int dy[]={0,1,0,-1,0};
int dfs(int x,int y) {
vis[x][y]=1;
int sum=0;
for(int i=1;i<=4;i++){
int nx=x+dx[i],ny=y+dy[i];
if(!cant[x][y][i]&&!nx&&!ny&&nx<=xmax+1&&ny<=ymax+1&&!vis[nx][ny]){
sum+=dfs(nx,ny);
}
}
sum+=cowcnt[x][y];
return sum;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>m>>n;
vector<vector<int> > zl(m,vector<int>(4)),cow(n,vector<int>(2));
for(auto& i:zl){
for(int j=0;j<4;j++){
cin>>i[j];
}
m1[i[0]],m1[i[2]],m2[i[1]],m2[i[3]];
}
for(auto& i:cow){
cin>>i[0]>>i[1];
m1[i[0]],m2[i[1]];
}
for(auto& [a,b]:m1){
b=++xmax;
}
for(auto& [a,b]:m2){
b=++ymax;
}
for(auto i:zl){
int x1=m1[i[0]],x2=m1[i[2]],y1=m2[i[1]],y2=m2[i[3]];
if(x1==x2){
if(y1>y2){
swap(y1,y2);
}
for(int j=y1;j<=y2;j++){
cant[x1-1][j][1]=1;
cant[x1][j][3]=1;
}
}
else{
if(x1>x2){
swap(x1,x2);
}
for(int j=x1;j<=x2;j++){
cant[j][y1-1][0]=1;
cant[j][y1][2]=1;
}
}
}
for(auto& i:cow){
i[0]=m1[i[0]],i[1]=m2[i[1]];
cowcnt[i[0]][i[1]]=1;
}
for(auto i:cow){
if(!vis[i[0]][i[1]]){
ans=max(ans,dfs(i[0],i[1]));
}
}
cout<<ans;
return 0;
}