#include using namespace std; typedef long long ll; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b #define vl vector #define vii vector> #define vll vector> #define vvi vector> #define vvl vector> #define vvii vector>> #define vvll vector>> #define vst vector #define pii pair #define pll pair #define pb push_back #define all(x) (x).begin(),(x).end() #define mkunique(x) sort(all(x));(x).erase(unique(all(x)),(x).end()) #define fi first #define se second #define mp make_pair #define si(x) int(x.size()) const int mod=998244353,MAX=300005,INF=15<<26; //幾何ライブラリ(整数) class Point{ public: ll x,y; Point(ll x=0,ll y=0):x(x),y(y){} Point operator + (Point p){return Point(x+p.x,y+p.y);} Point operator - (Point p){return Point(x-p.x,y-p.y);} Point operator * (ll a){return Point(a*x,a*y);} double norm(){return x*x+y*y;} bool operator < (const Point &p)const{ return x0) return counter_clockwise; if(cross(a,b)<0) return clockwise; if(dot(a,b)<0) return online_back; if(a.norm() Polygon; /* IN 2 ON 1 OUT 0 */ int contains(Polygon g,Point p){ int n=int(g.size()); bool x=false; for(int i=0;ib.y) swap(a,b); if(a.y<=0&&0=2&&ccw(u[j-2],u[j-1],s[i])==counter_clockwise;j--){ u.pop_back(); } u.push_back(s[i]); } for(int i=int(s.size())-3;i>=0;i--){ for(int j=int(l.size());j>=2&&ccw(l[j-2],l[j-1],s[i])==counter_clockwise;j--){ l.pop_back(); } l.push_back(s[i]); } } if(!ok){ for(int i=2;i=2&&ccw(u[j-2],u[j-1],s[i])!=clockwise;j--){ u.pop_back(); } u.push_back(s[i]); } for(int i=int(s.size())-3;i>=0;i--){ for(int j=int(l.size());j>=2&&ccw(l[j-2],l[j-1],s[i])!=clockwise;j--){ l.pop_back(); } l.push_back(s[i]); } } reverse(all(l)); for(int i=int(u.size())-2;i>=1;i--) l.push_back(u[i]); return l; }//ok==1なら辺の上も含める ll area(Polygon P){ ll sum=0; for(int i=0;i perpendicular_bisector(Point a,Point b){ Point c; c.x=(a.x+b.x)/2; c.y=(a.y+b.y)/2; Vector v=b-c; swap(v.x,v.y); v.x*=-1; Point p=c; if(v.x==0){ v.y=1; p.y=0; } else if(v.y==0){ v.x=1; p.x=0; } else{ if(v.x<0){ v.x*=-1; v.y*=-1; } ll g=gcd(abs(ll(v.x)),abs(ll(v.y))); v.x/=g; v.y/=g; if(p.x>=0){ ll d=p.x/v.x; p=p-v*d; }else{ ll d=abs(p.x)/v.x; p=p+v*d; if(p.x<0){ p=p+v; } } } return mp(p,v); } //2倍するなりして整数にしておくこと int main(){ std::ifstream in("text.txt"); std::cin.rdbuf(in.rdbuf()); cin.tie(0); ios::sync_with_stdio(false); int N;cin>>N; vector P(N); for(int i=0;i>P[i].x>>P[i].y; } auto Q=andrewScan(P,0); if(si(Q)==N) cout<<"Yes\n"; else cout<<"No\n"; }