#include <bits/stdc++.h>
#define IOS ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define _zero(a) memset(a, 0, sizeof(a))
#define endl '\n'
#define int long long
#define mp make_pair
#define x first
#define y second
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define PII pair<int, int>
typedef long long ll;
typedef double dd;
typedef long double ld;
using namespace std;
const int inf = 1e10;
const int M = 998244353;
const ld pi = atan2(0, -1);//arctan(y/x);
const ld eps = 1e-4;
const int maxn = 3e3;
int mn[maxn], mx[maxn];
int sp[maxn], cov[maxn];
int f1[maxn];
int c, l;
bool cmp1(int a, int b){
return mn[a] > mn[b];
}
signed main()
{
IOS;
int total = 0;
cin >> c >> l;
for(int i = 1; i <= c; i++){
f1[i] = i;
cin >> mn[i] >> mx[i];
}
for(int i = 1; i <= l; i++){
cin >> sp[i] >> cov[i];
total += cov[i];
}
sort(f1 + 1, f1 + 1 + c, cmp1);
int ans = 0;
int idx = 1;
while(total > 0 && idx <= c){
int xx = f1[idx];
int index = 0;
int mxx = 0;
for(int i = 1; i <= l; i++){
if(cov[i] > 0 && sp[i] >= mn[xx] && sp[i] <= mx[xx] && sp[i] > mxx){
mxx = sp[i];
index = i;
}
}
if(index >= 1){
cov[index]--;
++ans;
total--;
}
++idx;
}
cout << ans;
return 0;
}