#include<bits/stdc++.h>
using namespace std;
int n,m1,m2,anss[100005],m,ans,p,q,ans1[100005],ans2[100005],len1,len2,mm,temp,Ans[100005],tot=1;
set< pair<int,int> >s1;
set< pair<int,int> >s2;
set< pair<int,int> > ::iterator it;
struct AB{
int a,b;
};
AB mm1[100005]; AB mm2[100005];
bool cmp(AB x,AB y){
return x.a<y.a;
}
int main(){
// freopen("airport3.in","r",stdin);
// freopen("airport3.out","w",stdout);
scanf("%d%d%d",&n,&m1,&m2);
for(int i=1;i<=m1;i++)
scanf("%d%d",&mm1[i].a,&mm1[i].b);
for(int i=1;i<=m2;i++)
scanf("%d%d",&mm2[i].a,&mm2[i].b);
sort(mm1+1,mm1+m1+1,cmp);
sort(mm2+1,mm2+m2+1,cmp);
for(int i=1;i<=m1;i++){
int aa=mm1[i].a,bb=mm1[i].b;
if(!s1.size()){
s1.insert(make_pair(bb,++len1));
ans1[len1]++;
}
else{
it=s1.lower_bound(make_pair(aa,0));
if(it==s1.begin()){
s1.insert(make_pair(bb,++len1));
ans1[len1]++;
continue;
}
it--;
int x=it->second;
s1.erase(it);
s1.insert(make_pair(bb,x));
ans1[x]++;
}
}
for(int i=1;i<=m2;i++){
int aa=mm2[i].a,bb=mm2[i].b;
if(!s2.size()){
s2.insert(make_pair(bb,++len2));
ans2[len2]++;
}
else{
it=s2.lower_bound(make_pair(aa,0));
if(it==s2.begin()){
s2.insert(make_pair(bb,++len2));
ans2[len2]++;
continue;
}
it--;
int x=it->second;
s2.erase(it);
s2.insert(make_pair(bb,x));
ans2[x]++;
}
}
for(int i=len1;i;i--)
anss[++m]=ans1[i];
for(int i=1;i<=len2;i++)
anss[++m]=ans2[i];
for(int i=max(1,len1-n+1);i<=min(len1+len2,len1+n);i++){
// cout<<anss[i]<<endl;
if(temp<n){
Ans[1]+=anss[i];
temp++;
}
else{
Ans[++tot]=Ans[tot-1]+anss[i]-anss[i-n];
}
}
sort(Ans+1,Ans+1+tot);
ans=Ans[tot];
for(int i=1;i<=m;i++)
cout<<anss[i]<<endl;
for(int i=1;i<=tot;i++)
cout<<Ans[i]<<endl;
printf("%d",ans);
return 0;
}