#include<bits/stdc++.h>
#define int long long
using namespace std;
struct node
{
int x,y;
}a[200005];
int w,h,n,m=0,mx=-1,mn=0x3f3f3f3f,A,B,c[200005],b[200005];
map<pair<int,int>,int>mp;
bool cmp1(node i,node j)
{
return i.x<j.x||i.x==j.x&&i.y<j.y;
}
bool cmp2(node i,node j)
{
return i.y<j.y||i.y==j.y&&i.x<j.x;
}
signed main()
{
cin>>w>>h>>n;
for(int i=0;i<n;i++)
{
cin>>a[i].x>>a[i].y;
}
cin>>A;
for(int i=0;i<A;i++)
{
cin>>b[i];
}
b[A]=w;
cin>>B;
for(int i=0;i<B;i++)
{
cin>>c[i];
}
c[B]=h;
sort(b,b+A+1);
sort(c,c+B+1);
sort(a,a+n,cmp1);
for(int i=0,j=0;i<n;i++)
{
if(a[i].x<=b[j])a[i].x=j;
else a[i].x=++j;
}
sort(a,a+n,cmp2);
for(int i=0,j=0;i<n;i++)
{
if(a[i].y<=c[j])a[i].y=j;
else a[i].y=++j;
}
for(int i=0;i<n;i++)
{
mx=max(mx,++mp[{a[i].x,a[i].y}]);
}
for(int i=0;i<n;i++)
{
mn=min(mn,mp[{a[i].x,a[i].y}]);
}
cout<<(mp.size()/(B+1)<(A+1)?0:mn)<<" "<<mx;
return 0;
}