#include<iostream.h>
const int MAX_N=5000;
int n,m;
int x1, y1, x2, y2;
int Li, U[MAX_N+1];
int Xj, Yj;
int dx[MAX_N+1], dy;
int ans[MAX_N+1];
//二分查找求出当前点所在梯形的编号并返回.
int Solve();
int main()
{
int i;
while(cin>>n&&n!=0){
cin>>m>>x1>>y1>>x2>>y2;
dy=y1-y2;
for(i=0;i<n;i++){
cin>>U[i]>>Li;
dx[i]=U[i]-Li;
ans[i]=0;
}
ans[n]=0;
for(i=0;i<m;i++){
cin>>Xj>>Yj;
int j=Solve();
ans[j]++;
}
for(i=0;i<=n;i++){
cout<<i<<": "<<ans[i]<<endl;
}
cout<<endl;
}
return 0;
}
int Solve()
{
int left=-1, right=n;
while(right-left>1){
int mid=(left+right)/2;
if(dy*(Xj-U[mid])-dx[mid]*(Yj-y1)<0){
right=mid;
}
else{
left=mid;
}
}
return right;
}