#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 ccw(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]; ll cross = xk * yi - yk * xi; return cross == 0 ? 0 : cross / abs(cross); } 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] ? i < j : X[i] < X[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(); map, int> cnt_tan; for(int i = 0; i < N; i++) { if(i == k) continue; cnt_tan[tan(k, i)]++; } for(auto [_, c] : cnt_tan) { if(c >= 2) { 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 ccw(i, k, j); }); P.push_back(k); for(int x = 0; x < N; x++) { int y = (x + 1) % N; int z = (x + 2) % N; if(ccw(x, y, z) != 1) { cout << "No" << endl; return 0; } } cout << "Yes" << endl; }