#include using namespace std; #include using namespace atcoder; using ll = long long; using mint = modint998244353; int N; ll X[2 << 17]; ll Y[2 << 17]; ll cross(int i, int j, int k) { ll xi = X[i] - X[j]; ll yi = Y[i] - Y[j]; ll xk = X[k] - X[j]; ll yk = Y[k] - Y[j]; return xk * yi - yk * xi; } ll dist(int i, int j) { ll xi = X[i] - X[j]; ll yi = Y[i] - Y[j]; return xi * xi + yi * yi; } pair tan(int i, int j) { ll dx = X[j] - X[i]; ll dy = Y[j] - Y[i]; ll g = gcd(dx, dy); ll sgn = dx >= 0 ? 1 : -1; return make_pair(dx / g * sgn, dy / g * sgn); } int find_pivot() { vector P(N); iota(P.begin(), P.end(), 0); auto it = min_element(P.begin(), P.end(), [&](int i, int j) { return X[i] != X[j] ? X[i] < X[j] : Y[i] < Y[j]; }); return it - P.begin(); } int main() { cin >> N; for(int i = 0; i < N; i++) { cin >> X[i] >> Y[i]; } const int k = find_pivot(); set> st_tan; for(int i = 0; i < N; i++) { if(i == k) continue; st_tan.insert(tan(k, i)); } if(ssize(st_tan) < N - 1) { cout << "No" << endl; return 0; } vector P(N); iota(P.begin(), P.end(), 0); P.erase(P.begin() + k); sort(P.begin(), P.end(), [&](int i, int j) { return cross(k, i, j) > 0; }); P.push_back(k); for(int x = 0; x < N; x++) { int y = (x + 1) % N; int z = (x + 2) % N; if(cross(P[x], P[y], P[z]) <= 0) { cout << "No" << endl; return 0; } } cout << "Yes" << endl; }