#include using namespace std; struct vec2{ int64_t x,y; vec2 operator -(vec2 const &a) const{ return {x-a.x,y-a.y}; } long double length() const{ return hypotl(x,y); } }; int64_t cross(vec2 const &a,vec2 const &b){ return a.y*b.x-a.x*b.y; } bool between(pair const &a,pair const &b){ int64_t c1=cross(a.second-a.first,b.first-a.first); int64_t c2=cross(a.second-a.first,b.second-a.first); return (c1<=0 and c2>=0) or (c2<=0 and c1>=0); } bool intersects(pair const &a,pair const &b){ return between(a,b) and between(b,a); } int main(){ int n; cin>>n; vector v(n*2+4); cin>>v[0].x>>v[0].y; v[1]=v[0]; for (auto it=v.begin()+2; it!=v.begin()+n*2+2; ++it) cin>>it->x>>it->y; cin>>v[n*2+2].x>>v[n*2+2].y; v[n*2+3]=v[n*2+2]; vector dist(n*2+4,1e80L); dist[1]=0; for (int i=2; i=dist[i]){ continue; } bool ok=true; for (int k=(j&~0x1)+2; k/2