#include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<map>
#include<algorithm>
using namespace std;
struct circle
{
int le,ri;
int isUsed;
}chao[2505];
bool compareCircle(struct circle a,struct circle b)
{
if(a.ri<b.ri)return true;
if(a.ri==b.ri)return a.le<b.le;
return false;
}
int main()
{
int N,L;
int i;
scanf("%d%d",&N,&L);
for(int i=0;i<N;i++)
{
scanf("%d%d",&chao[i].le,&chao[i].ri);
}
sort(chao.chao+N,compareCircle);
int quan[1005];
//init
for(int i=1;i<=1000;i++)
{
quan[i]=0;
}
for(int j=0;j<l;j++)
{
int a,b;
scanf("%d%d",&a,&b);
quan[a]+=b;
}
int sum=0;
//以要放入的圆圈为主,去放到槽中
for(int k=1;k<=1000;k++)
{
if(quan[k]==0)continue;
for(int t=0;t<N;t++)
{
if(chao[t].isUsed==0)
{
if(chao[t].le<=k&&chao[t].ri>=k)
{
chao[t].isUsed=1;
sum++;
quan[k]--;
if(quan[k]==0)break;
}
}
}
}
printf("%d",sum);
reurn 0;
}