#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;
}