#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define FOR(i, l, r) for(int i = l; i <= r; i++)
#define FORD(i, l, r) for(int i = l; i >= r; i--)
struct Art{
int sz, value; //size, value
};
bool compare(const Art& a, const Art& b){
return a.value > b.value || (a.value == b.value && a.sz > b.sz);
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, m;
cin >> n >> m;
vector<Art>a(n + 1);
FOR(i, 1, n) cin >> a[i].sz >> a[i].value;
vector<int>frame(m + 1);
FOR(i, 1, m) cin >> frame[i];
int ans = 0;
sort(frame.begin() + 1, frame.end(), greater<int>());
sort(a.begin() + 1, a.end(), compare);
int ptr_art = 1, ptr_frame = 1;
while(ptr_art <= n && ptr_frame <= m){
if(a[ptr_art].sz <= frame[ptr_frame]){
++ans;
++ptr_art;
++ptr_frame;
}
else{
++ptr_art;
}
}
cout << ans << "\n";
return 0;
}