#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int,int>
#define f first
#define s second
#define all(x) x.begin(),x.end()
#define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define pll pair<ll,ll>
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void setIO(string s) {
freopen((s + ".in").c_str(), "r", stdin);
freopen((s + ".out").c_str(), "w", stdout);
}
inline pll operator-(pll a,pll b){
return pll(a.f-b.f,a.s-b.s);
}
inline ll cross(pll a,pll b){
return a.f*b.s-a.s*b.f;
}
inline ll dot(pll a,pll b){
return a.f*b.f+a.s*b.s;
}
inline int ori(pll a,pll b,pll c){
ll ans=cross(b-a,c-a);
return (ans==0?0:(ans<0?-1:1));
}
inline bool btw(pll a,pll b,pll c){
return (ori(a,b,c)==0 and dot(a-b,c-b)<=0);
}
inline bool intersect(pll a,pll b,pll c,pll d){
if(btw(a,c,b)||btw(a,d,b)||btw(c,a,d)||btw(c,b,d)) return true;
return (ori(a,b,c)*ori(a,b,d)<0 and ori(c,d,a)*ori(c,d,b)<0);
}
inline bool comp(pair<pll,int> a,pair<pll,int> b){
#define is_neg(x) (x.s<0 or (x.s==0 and x.f<0))
int A=is_neg(a.f);
int B=is_neg(b.f);
if(A!=B){
return A>B;
}
int res=ori(pll(0,0),a.f,b.f);
if(res>0) return true;
else if(res<0) return false;
else return a.s<b.s;
}
struct BIT{
vector<int> bit;
int n;
BIT(int _n){
n=_n;
bit.resize(n+1);
}
void update(int pos,int val){
pos++;
for(;pos<=n;pos+=(pos&-pos)){
bit[pos]+=val;
}
}
int query(int pos){
pos++;
int ans=0;
for(;pos>0;pos-=(pos&-pos)){
ans+=bit[pos];
}
return ans;
}
};
int main() {_
int n,m;
cin>>n>>m;
vector<pll> a(n),b(m);
for(int i=0;i<n;i++){
cin>>a[i].f>>a[i].s;
}
for(int i=0;i<m;i++){
cin>>b[i].f>>b[i].s;
}
sort(all(b));
ll ans=0;
vector<int> ord(m);
for(int i=0;i<m;i++){
vector<pair<pll,int>> pt;
for(int j=i+1;j<m;j++){
pt.push_back({b[j]-b[i],j});
}
sort(all(pt),comp);
int sz=(int)pt.size();
BIT bit(sz);
for(int i=0;i<sz;i++){
ord[pt[i].s]=i;
}
int r=i+1;
for(int j=0;j<n-1;j++){
if(a[j].f<b[i].f) continue;;
while(r<m and b[r].f<=a[j+1].f){
bit.update(ord[r],1);
cout << r << ' ' ;
r++;
}
cout << '\n';
int l=lower_bound(all(b),pll(a[j].f,-1))-b.begin();
l=max(l,i+1);
for(int k=l;k<r;k++){
if(intersect(b[i],b[k],a[j],a[j+1])) ans++;
}
pll L=a[j]-b[i];
pll R=a[j+1]-b[i];
if(comp(make_pair(R,-1),make_pair(L,-1))) swap(L,R);
int tl=lower_bound(all(pt),make_pair(L,-1),comp)-pt.begin();
int tr=upper_bound(all(pt),make_pair(R,m),comp)-pt.begin()-1;
cout<<r << ' ' << ans << ' ' << tl <<' '<< tr <<'\n';
if(tl<=tr) ans+=(tr-tl+1)-(bit.query(tr)-bit.query(tl-1));
}
//cout<<ans<<'\n';
}
for(int i=0;i<m;i++){
int pos=-1;
for(int j=0;j<n-1;j++){
if(a[j].f<b[i].f and a[j+1].f>=b[i].f){
pos=j;
}
}
if(pos==-1) continue;
for(int j=i+1;j<m;j++){
if(intersect(b[i],b[j],a[pos],a[pos+1])) ans++;
}
}
cout<<ans<<'\n';
return 0;
}
//maybe its multiset not set
//yeeorz
//diaoborz
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zIikKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBmIGZpcnN0CiNkZWZpbmUgcyBzZWNvbmQKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLHguZW5kKCkKI2RlZmluZSBfIGlvczo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKI2RlZmluZSBwbGwgcGFpcjxsbCxsbD4KCmludCBkeFs0XT17MCwwLDEsLTF9OwppbnQgZHlbNF09ezEsLTEsMCwwfTsKCnZvaWQgc2V0SU8oc3RyaW5nIHMpIHsKICAgIGZyZW9wZW4oKHMgKyAiLmluIikuY19zdHIoKSwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKChzICsgIi5vdXQiKS5jX3N0cigpLCAidyIsIHN0ZG91dCk7Cn0KCmlubGluZSBwbGwgb3BlcmF0b3ItKHBsbCBhLHBsbCBiKXsKICAgIHJldHVybiBwbGwoYS5mLWIuZixhLnMtYi5zKTsKfQoKaW5saW5lIGxsIGNyb3NzKHBsbCBhLHBsbCBiKXsKICAgIHJldHVybiBhLmYqYi5zLWEucypiLmY7Cn0KCmlubGluZSBsbCBkb3QocGxsIGEscGxsIGIpewogICAgcmV0dXJuIGEuZipiLmYrYS5zKmIuczsKfQoKaW5saW5lIGludCBvcmkocGxsIGEscGxsIGIscGxsIGMpewogICAgbGwgYW5zPWNyb3NzKGItYSxjLWEpOwogICAgcmV0dXJuIChhbnM9PTA/MDooYW5zPDA/LTE6MSkpOwp9CgppbmxpbmUgYm9vbCBidHcocGxsIGEscGxsIGIscGxsIGMpewogICAgcmV0dXJuIChvcmkoYSxiLGMpPT0wIGFuZCBkb3QoYS1iLGMtYik8PTApOwp9CgppbmxpbmUgYm9vbCBpbnRlcnNlY3QocGxsIGEscGxsIGIscGxsIGMscGxsIGQpewogICAgaWYoYnR3KGEsYyxiKXx8YnR3KGEsZCxiKXx8YnR3KGMsYSxkKXx8YnR3KGMsYixkKSkgcmV0dXJuIHRydWU7CiAgICByZXR1cm4gKG9yaShhLGIsYykqb3JpKGEsYixkKTwwIGFuZCBvcmkoYyxkLGEpKm9yaShjLGQsYik8MCk7Cn0KCmlubGluZSBib29sIGNvbXAocGFpcjxwbGwsaW50PiBhLHBhaXI8cGxsLGludD4gYil7CiAgICAjZGVmaW5lIGlzX25lZyh4KSAoeC5zPDAgb3IgKHgucz09MCBhbmQgeC5mPDApKQogICAgaW50IEE9aXNfbmVnKGEuZik7CiAgICBpbnQgQj1pc19uZWcoYi5mKTsKICAgIGlmKEEhPUIpewogICAgICAgIHJldHVybiBBPkI7CiAgICB9CiAgICBpbnQgcmVzPW9yaShwbGwoMCwwKSxhLmYsYi5mKTsKICAgIGlmKHJlcz4wKSByZXR1cm4gdHJ1ZTsKICAgIGVsc2UgaWYocmVzPDApIHJldHVybiBmYWxzZTsKICAgIGVsc2UgcmV0dXJuIGEuczxiLnM7Cn0KCnN0cnVjdCBCSVR7CiAgICB2ZWN0b3I8aW50PiBiaXQ7CiAgICBpbnQgbjsKICAgIEJJVChpbnQgX24pewogICAgICAgIG49X247CiAgICAgICAgYml0LnJlc2l6ZShuKzEpOwogICAgfQogICAgdm9pZCB1cGRhdGUoaW50IHBvcyxpbnQgdmFsKXsKICAgICAgICBwb3MrKzsKICAgICAgICBmb3IoO3Bvczw9bjtwb3MrPShwb3MmLXBvcykpewogICAgICAgICAgICBiaXRbcG9zXSs9dmFsOwogICAgICAgIH0KICAgIH0KICAgIGludCBxdWVyeShpbnQgcG9zKXsKICAgICAgICBwb3MrKzsKICAgICAgICBpbnQgYW5zPTA7CiAgICAgICAgZm9yKDtwb3M+MDtwb3MtPShwb3MmLXBvcykpewogICAgICAgICAgICBhbnMrPWJpdFtwb3NdOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYW5zOwogICAgfQp9OwoKaW50IG1haW4oKSB7XwogICAgaW50IG4sbTsKICAgIGNpbj4+bj4+bTsKICAgIHZlY3RvcjxwbGw+IGEobiksYihtKTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgIGNpbj4+YVtpXS5mPj5hW2ldLnM7CiAgICB9CiAgICBmb3IoaW50IGk9MDtpPG07aSsrKXsKICAgICAgICBjaW4+PmJbaV0uZj4+YltpXS5zOwogICAgfQogICAgc29ydChhbGwoYikpOwogICAgbGwgYW5zPTA7CiAgICB2ZWN0b3I8aW50PiBvcmQobSk7CiAgICBmb3IoaW50IGk9MDtpPG07aSsrKXsKICAgICAgICB2ZWN0b3I8cGFpcjxwbGwsaW50Pj4gcHQ7CiAgICAgICAgZm9yKGludCBqPWkrMTtqPG07aisrKXsKICAgICAgICAgICAgcHQucHVzaF9iYWNrKHtiW2pdLWJbaV0san0pOwogICAgICAgIH0KICAgICAgICBzb3J0KGFsbChwdCksY29tcCk7CiAgICAgICAgaW50IHN6PShpbnQpcHQuc2l6ZSgpOwogICAgICAgIEJJVCBiaXQoc3opOwogICAgICAgIGZvcihpbnQgaT0wO2k8c3o7aSsrKXsKICAgICAgICAgICAgb3JkW3B0W2ldLnNdPWk7CiAgICAgICAgfQogICAgICAgIGludCByPWkrMTsKICAgICAgICBmb3IoaW50IGo9MDtqPG4tMTtqKyspewogICAgICAgICAgICBpZihhW2pdLmY8YltpXS5mKSBjb250aW51ZTs7CiAgICAgICAgICAgIHdoaWxlKHI8bSBhbmQgYltyXS5mPD1hW2orMV0uZil7CiAgICAgICAgICAgICAgICBiaXQudXBkYXRlKG9yZFtyXSwxKTsKICAgICAgICAgICAgICAgIGNvdXQgPDwgciA8PCAnICcgOwogICAgICAgICAgICAgICAgcisrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvdXQgPDwgJ1xuJzsKICAgICAgICAgICAgaW50IGw9bG93ZXJfYm91bmQoYWxsKGIpLHBsbChhW2pdLmYsLTEpKS1iLmJlZ2luKCk7CiAgICAgICAgICAgIGw9bWF4KGwsaSsxKTsKICAgICAgICAgICAgZm9yKGludCBrPWw7azxyO2srKyl7CiAgICAgICAgICAgICAgICBpZihpbnRlcnNlY3QoYltpXSxiW2tdLGFbal0sYVtqKzFdKSkgYW5zKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGxsIEw9YVtqXS1iW2ldOwogICAgICAgICAgICBwbGwgUj1hW2orMV0tYltpXTsKICAgICAgICAgICAgaWYoY29tcChtYWtlX3BhaXIoUiwtMSksbWFrZV9wYWlyKEwsLTEpKSkgc3dhcChMLFIpOwogICAgICAgICAgICBpbnQgdGw9bG93ZXJfYm91bmQoYWxsKHB0KSxtYWtlX3BhaXIoTCwtMSksY29tcCktcHQuYmVnaW4oKTsKICAgICAgICAgICAgaW50IHRyPXVwcGVyX2JvdW5kKGFsbChwdCksbWFrZV9wYWlyKFIsbSksY29tcCktcHQuYmVnaW4oKS0xOwogICAgICAgICAgICBjb3V0PDxyIDw8ICcgJyA8PCBhbnMgPDwgJyAnIDw8IHRsIDw8JyAnPDwgdHIgPDwnXG4nOwogICAgICAgICAgICBpZih0bDw9dHIpIGFucys9KHRyLXRsKzEpLShiaXQucXVlcnkodHIpLWJpdC5xdWVyeSh0bC0xKSk7CiAgICAgICAgfQogICAgICAgIC8vY291dDw8YW5zPDwnXG4nOwogICAgfQogICAgZm9yKGludCBpPTA7aTxtO2krKyl7CiAgICAgICAgaW50IHBvcz0tMTsKICAgICAgICBmb3IoaW50IGo9MDtqPG4tMTtqKyspewogICAgICAgICAgICBpZihhW2pdLmY8YltpXS5mIGFuZCBhW2orMV0uZj49YltpXS5mKXsKICAgICAgICAgICAgICAgIHBvcz1qOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmKHBvcz09LTEpIGNvbnRpbnVlOwogICAgICAgIGZvcihpbnQgaj1pKzE7ajxtO2orKyl7CiAgICAgICAgICAgIGlmKGludGVyc2VjdChiW2ldLGJbal0sYVtwb3NdLGFbcG9zKzFdKSkgYW5zKys7CiAgICAgICAgfQogICAgfQogICAgY291dDw8YW5zPDwnXG4nOwogICAgcmV0dXJuIDA7Cn0KLy9tYXliZSBpdHMgbXVsdGlzZXQgbm90IHNldAovL3llZW9yegovL2RpYW9ib3J6