#include<bits/stdc++.h>
#define int long long
using namespace std;
inline void read(int& a){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
s=s*10+ch-'0';
ch=getchar();
}
a=s*w;
}
int n,k,ans;
struct node{
int a,c;
}p[300005];
int v[300005];
int vis[300005];
int dp[300005];
bool cmp(node a,node b){
if(a.c!=b.c)return a.c>b.c;
else return a.a>b.a;
}
signed main(){
read(n),read(k);
for(int i=1;i<=n;i++){
read(p[i].a),read(p[i].c);
}
sort(p+1,p+n+1,cmp);
for(int i=1;i<=k;i++){
read(v[i]);
}
sort(v+1,v+k+1);
for(int i=1;i<=k;i++){
for(int j=1;j<=n;j++){
if(p[j].a<=v[i]&&dp[i]<p[j].c&&vis[j]==0){
dp[i]=p[j].c;
vis[j]=1;
break;
}
}
}
for(int i=1;i<=k;i++){
ans+=dp[i];
// cout<<dp[i]<<endl;
}
printf("%d",ans);
return 0;
}