#include <bits/stdc++.h>
using namespace std;
#define lalala ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define N 1005
#define pb push_back
#define p push
#define int long long int
#define s second
#define big 1000000000000
int arr[N];
int frame[N];
int n,m;
signed main(){
lalala;
//memset(dp,-1,sizeof(dp));
cin>>n>>m;
vector<pair<int,int>> v;
for(int i=1;i<=n;i++){
int a,b;cin>>a>>b;
v.pb({-b,a});
}
sort(v.begin(),v.end());
for(int i=0;i<n;i++)arr[i+1]=v[i].s;
for(int i=1;i<=m;i++){
cin>>frame[i];
/*kac[i]++;
int ok=0;
for(int j=1;j<i;j++){
if(frame[j]<=frame[i]){
adj[j].pb(i);
ok=1;
}
}
if(ok==0)adj[0].pb(i);*/
}
stack<int> st;
vector<stack<int>> wow;
for(int i=1;i<=n;i++){
if(st.size()&&st.top()>arr[i])wow.pb(st);
while(st.size()&&st.top()>arr[i]){
st.pop();
}
st.p(arr[i]);
}
wow.pb(st);
int cev=0;
for(auto u:wow){
int yer=0,kac=0;
vector<int> yey;
while(u.size()){
yey.pb(u.top());u.pop();
}
reverse(yey.begin(),yey.end());
for(int i=1;i<=m&&yer<yey.size();i++){
if(yey[yer]<=frame[i]){
kac++;
yer++;
}
}
cev=max(cev,kac);
}
cout<<cev<<endl;
}