#include <bits/stdc++.h>
using namespace std;
#define lalala ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define N 15
#define pb push_back
#define int long long int
#define s second
#define big 1000000000000
int arr[N];
vector<int> cerceve;
int dp[N][N][N];
int n,m;
int coz(int i,int j,int mx){//j ilk bos yer
if(i>=n||j>=m)return 0;
if(dp[i][j][mx]!=-1)return dp[i][j][mx];
int lim=-3;
if(j!=0)lim=arr[mx];
int a=max(coz(i,j+1,mx),coz(i+1,j,mx)),b=-1;
if(arr[i]<=cerceve[j]&&cerceve[j]>=lim)b=coz(i+1,j+1,j)+1;
//cout<<i<<" "<<j<<" "<<mx<<" "<<a<<" "<<b<<endl;
dp[i][j][mx]=max(a,b);
return dp[i][j][mx];
}
signed main(){
lalala;
memset(dp,-1,sizeof(dp));
cin>>n>>m;
vector<pair<int,int>> v;
for(int i=0;i<n;i++){
int s,vv;cin>>s>>vv;
v.pb({-vv,s});
}
for(int i=0;i<m;i++){
int a;cin>>a;
cerceve.pb(a);
}
sort(v.begin(),v.end());
for(int i=0;i<n;i++)arr[i]=v[i].s;
/*for(int i=0;i<n;i++)cout<<arr[i]<<" ";
cout<<endl;*/
cout<<coz(0,0,0)<<endl;
}