#pragma GCC optimize("Ofast") #define rd() ({long _v=0,_c;while(_c=*rp++-48,_c>=0)_v=_v*10+_c;_v;}) #define wt(v) {ulong _z=v;do*--wp=_z%10+48;while(_z/=10);} #define rep(v,e) for(long v=0;v>11|a[i]<<53; } } void radix_sort(ulong*a,int n){ static ulong b[200000]; radix_sort_aux(a,b,n); radix_sort_aux(b,a,n); for(int i=0;i>42|a[i]<<22; } } P a[200000]; long f1(){ char*mmap(); char*rp=mmap(0l,1l<<25,1,2,0,0ll); long n=rd(); rep(i,n){ long neg=0; if(*rp=='-'){ ++rp; neg=!neg; } long x=rd(); if(*rp=='-'){ ++rp; neg=!neg; } long y=rd(); a[i].y=y; a[i].x=(neg?-x:x)+(1<<20); } radix_sort(a,n); return n; } long f2(long n){ long m=0; rep(i,n){ long y=a[i].y; long x=a[i].x-(1<<20); while(m>=2&&(a[m-1].x-x)*(a[m-2].y-y)-(a[m-1].y-y)*(a[m-2].x-x)>=0){ --m; } a[m].y=y; a[m].x=x; ++m; } return m; } long f3(long m){ long z=0; long r=0; rep(i,m){ r=r