#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;
#define db double
const db EPS = 1e-9;
inline int sign(db a){return a<-EPS?-1:a>EPS;}
inline int cmp(db a,db b){return sign(a-b);}
struct P {
db x,y;
P(){}
P(db _x,db _y):x(_x),y(_y){}
P operator+(P p){return P(x+p.x, y+p.y);}
P operator-(P p){return P(x-p.x, y-p.y);}
P operator*(db d){return P(x*d, y*d);}
P operator/(db d){return P(x/d, y/d);}
bool operator<(P p)const {//先左再下
int c=cmp(x, p.x);
if(c)return c==-1;
return cmp(y, p.y)==-1;
}
bool operator==(P o)const {
return cmp(x,o.x)==0 && cmp(y,o.y)==0;
}
db dot(P p){return x*p.x+y*p.y;}
db det(P p){return x*p.y-y*p.x;}
};
db cross(P p1,P p2,P p3){return (p2.x-p1.x)*(p3.y-p1.y)-(p3.x-p1.x)*(p2.y-p1.y);}//向量(p1,p2)^(p1,p3)
int crossOp(P p1,P p2,P p3){return sign(cross(p1,p2,p3));}//(p1,p2)^(p1,p3),1:p3在p2逆时针
int n,m,cnt[5005];
double x1,y1,x2,y2;
pair<P,P>lines[5005];
int main(){
while(scanf("%d",&n) && n!=0){
memset(cnt,0,sizeof cnt);
scanf("%d",&m);
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
pair<P,P>l = make_pair(P(x1,y2),P(x1,y1));
pair<P,P>r = make_pair(P(x2,y2),P(x2,y1));
lines[0]=l;lines[n+1]=r;
for(int i=1;i<=n;i++){
double U,L;
scanf("%lf%lf",&U,&L);
pair<P,P>line=make_pair(P(L,y2),P(U,y1));
lines[i]=line;
}
while(m--){
P p;
scanf("%lf%lf",&p.x,&p.y);
int flag=0;
for(int i=1;i<=n;i++){
P low=lines[i].first;
P up=lines[i].second;
if(crossOp(low,p,up)<0){
flag=1;cnt[i]++;break;
}
}
if(flag==0)cnt[n+1]++;
}
for(int i=1;i<=n+1;i++)
cout<<i-1<<": "<<cnt[i]<<'\n';
puts("");
}
}