#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<math.h>
#define fab(a)(a<1e-6)?-1:1
//判断a是否小于0,如果小于0,则返回-1,即此时有向面积为顺时针
using namespace std;
const __int64 MAXN=1002;
__int64 cnt[MAXN],num[MAXN];
typedef struct
{
__int64 x,y,_x,_y;
}Point;
Point p[MAXN];
bool cmp(Point a,Point b)
{
if(a.x!=b.x)return a.x<b.x;
return a._x<b._x;
}
double det(double x1,double y1,double x2,double y2)
{
return x1*y2-x2*y1;
}
int cross(__int64 x,__int64 y,Point loc)
{
return fab(det(1.0*(loc.x-x),1.0*(loc.y-y),1.0*(loc._x-x),1.0*(loc._y-y)));
}
int fun(__int64 x,__int64 y,int front,int rear)
{
do
{
int mid=front+(rear-front)/2;
int ans1=fab(cross(x,y,p[mid]));
int ans2=fab(cross(x,y,p[mid+1]));
if(ans1*ans2<0)return mid;
else if(ans1>0)front=mid;//注意此处
else rear=mid;
}while(1);
}
int main()
{
__int64 n,m,i;
__int64 a,b,X,Y,_X,_Y;
while(scanf("%I64d",&n),n)
{
scanf("%I64d%I64d%I64d%I64d%I64d",&m,&X,&Y,&_X,&_Y);
p[0].x=p[0]._x=X;
p[0].y=p[n+1].y=Y;
p[0]._y=p[n+1]._y=_Y;
p[n+1].x=p[n+1]._x=_X;
for(i=1;i<=n;i++)
{
scanf("%I64d%I64d",&X,&_X);
p[i].x=X;
p[i]._x=_X;
p[i].y=Y;
p[i]._y=_Y;
}
sort(p+1,p+n+1,cmp);
//因为用到二分,所以一点要注意要先进行排序(此处与Poj2318 Toys不同)
for(i=0;i<m;i++)
{
scanf("%I64d%I64d",&a,&b);
num[(fun(a,b,0,n+1))]++;
}
for(i=0;i<=n;i++)
cnt[num[i]]++;
printf("Box\n");
for(i=1;i<MAXN;i++)
if(cnt[i])
printf("%I64d: %I64d\n",i,cnt[i]);
memset(num,0,sizeof(num));
memset(cnt,0,sizeof(cnt));
}
return 0;
}