#include <bits/stdc++.h>
#define ll long long
#define int ll
#define vi vector<int>
#define rep(i,s,e) for(int i=(s); i<=(e); i++)
#define arr2 array<int,2>
#define arr3 array<int,3>
using namespace std;
const int LM=200100;
int N,M, A[LM];
arr2 f[LM];
int Q(int n){
vi a;
rep(i,1,n) a.push_back(A[i]);
sort(a.begin(),a.end(), greater<int>());
int pv=N;
for(int i:a){
if(i<=f[pv][0]) pv--;
else return 0;
}
return 1;
}
signed main() {
ios_base::sync_with_stdio(0);cin.tie(0);
cin>>N>>M;
rep(i,1,N){
cin>>f[i][0]>>f[i][1];
}
sort(f+1,f+N+1);
rep(i,1,M){
cin>>A[i];
}
int low=0,hig=min(N,M);
while(low<hig){
int mid=low+hig+1>>1;
if(Q(mid)) low=mid;
else hig=mid-1;
}
M=low;
sort(A+1,A+M+1);
int ans=0;
priority_queue<int> pq;
int pv=N;
for(int i=M; i>0; i--){
for(; pv>0 && f[pv][0] >= A[i];pv--) pq.push(f[pv][1]);
ans += pq.top(); pq.pop();
}
cout<<M<<" "<<ans;
}