#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
#define endl '\n'
struct node{
int x,y;//时间 等级
};
void solve()
{
int n,m;cin>>n>>m;
vector<node>a(n),b(m);//机器 任务
for(int i=0,x,y;i<n;i++){
cin>>x>>y;
a[i].x=x;
a[i].y=y;
}
for(int i=0,x,y;i<m;i++){
cin>>x>>y;
b[i].x=x;
b[i].y=y;
}
//从最大时间最大等级开始遍历
sort(a.begin(),a.end(),[](node&a,node&b){return a.x>b.x||a.x==b.x&&a.y>b.y;});
sort(b.begin(),b.end(),[](node&a,node&b){return a.x>b.x||a.x==b.x&&a.y>b.y;});
int cnt[105]={0};//cnt[i] i等级可用的机器数量
int count=0;//机器使用的数量
ll sum=0;//报酬
int j=0;//机器指针
for(int i=0;i<m;i++){
//统计所有可用的机器
while(j<n&&a[j].x>=b[i].x){
cnt[a[j].y]++;
j++;
}
//取一个恰好符合要求的机器
for(int jj=b[i].y;jj<=100;jj++){
if(cnt[jj]>0){
cnt[jj]--;
count++;
sum+=500ll*b[i].x+2ll*b[i].y;
break;
}
}
}
cout<<count<<" "<<sum<<endl;
}
int main()
{
ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
int t=1;//cin>>t;
while(t--)solve();
return 0;
}