#include <iostream>
#include <cmath>
#include <stdio.h>
#include <string.h>
using namespace std;
const int M = 100005;
int n,m;
int ntime[M],ngrade[M];
int mtime[M],mgrade[M];
long long sum = 0;
void paixu(int t[M],int g[M],int n)
{
for(int i=0; i<n; i++)
{
int min = i;
for(int j =i+1; j<n; j++)
{
if(t[j]<t[min])
min =j;
else if(t[j]==t[min])
{
if(g[j]<g[min])
min = j;
}
}
if(min!=i)
{
swap(t[i],t[min]);
swap(g[i],g[min]);
}
}
}
void paixu2(int t[M],int g[M],int n)
{
for(int i=0; i<n; i++)
{
int max = i;
for(int j =i+1; j<n; j++)
{
if(t[j]>t[max])
max =j;
else if(t[j]==t[max])
{
if(g[j]>g[max])
max = j;
}
}
if(max!=i)
{
swap(t[i],t[max]);
swap(g[i],g[max]);
}
}
}
int main( )
{
while(~scanf("%d%d",&n,&m))
{
memset(ntime,0,M);
memset(ngrade,0,M);
memset(mtime,0,M);
memset(mgrade,0,M);
for(int i=0; i<n; i++)
{
cin>>ntime[i];
cin>>ngrade[i];
}
for(int i=0; i<m; i++)
{
cin>>mtime[i];
cin>>mgrade[i];
}
paixu(ntime,ngrade,n);
paixu2(mtime,mgrade,m);
int flag = 0;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
if(ntime[j]>=mtime[i]&&ngrade[j]>=mgrade[i])
{
sum += 500*mtime[i] + 2*mgrade[i];
flag++;
ntime[j] = 0;
ngrade[j] = 0;
break;
}
}
}
cout<<flag<<" "<<sum<<endl;
sum =0;
flag = 0;
}
return 0;
}
#include <cmath>
#include <stdio.h>
#include <string.h>
using namespace std;
const int M = 100005;
int n,m;
int ntime[M],ngrade[M];
int mtime[M],mgrade[M];
long long sum = 0;
void paixu(int t[M],int g[M],int n)
{
for(int i=0; i<n; i++)
{
int min = i;
for(int j =i+1; j<n; j++)
{
if(t[j]<t[min])
min =j;
else if(t[j]==t[min])
{
if(g[j]<g[min])
min = j;
}
}
if(min!=i)
{
swap(t[i],t[min]);
swap(g[i],g[min]);
}
}
}
void paixu2(int t[M],int g[M],int n)
{
for(int i=0; i<n; i++)
{
int max = i;
for(int j =i+1; j<n; j++)
{
if(t[j]>t[max])
max =j;
else if(t[j]==t[max])
{
if(g[j]>g[max])
max = j;
}
}
if(max!=i)
{
swap(t[i],t[max]);
swap(g[i],g[max]);
}
}
}
int main( )
{
while(~scanf("%d%d",&n,&m))
{
memset(ntime,0,M);
memset(ngrade,0,M);
memset(mtime,0,M);
memset(mgrade,0,M);
for(int i=0; i<n; i++)
{
cin>>ntime[i];
cin>>ngrade[i];
}
for(int i=0; i<m; i++)
{
cin>>mtime[i];
cin>>mgrade[i];
}
paixu(ntime,ngrade,n);
paixu2(mtime,mgrade,m);
int flag = 0;
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
if(ntime[j]>=mtime[i]&&ngrade[j]>=mgrade[i])
{
sum += 500*mtime[i] + 2*mgrade[i];
flag++;
ntime[j] = 0;
ngrade[j] = 0;
break;
}
}
}
cout<<flag<<" "<<sum<<endl;
sum =0;
flag = 0;
}
return 0;
}