#include #include #include using namespace std; const double eps=1e-10; const int N=1e5; inline int dcmp(double x) { return fabs(x)0?1:-1); } struct point { double x,y; point() { } point(double x,double y):x(x),y(y){} inline point operator+(const point &a) const { return point(x+a.x,y+a.y); } inline point operator-(const point &a) const { return point(x-a.x,y-a.y); } inline void in() { scanf("%lf%lf",&x,&y); } inline bool operator < (const point &a) const { return x+eps0&&d1<=0&&d2>0) wn++; if(k<0&&d2<=0&&d1>0) wn--; } if(wn!=0) return 1; return 0; } int ConvexHull(point *p,int n,point *ch) { sort(p,p+n); int m=0; for(int i=0;i1&&cross(ch[m-1]-ch[m-2],p[i]-ch[m-2])<=0) m--; ch[m++]=p[i]; } int k=m; for(int i=n-2;i>=0;i--) { while(m>k&&cross(ch[m-1]-ch[m-2],p[i]-ch[m-2])<=0) m--; ch[m++]=p[i]; } if(n>1) m--; return m; } int m,c; point p1[510],p2[510],ch1[510],ch2[510]; int main() { #ifdef local freopen("pro.in","r",stdin); #endif while(scanf("%d%d",&m,&c)==2&&!(m==0&&c==0)) { for(int i=0;i