#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0; i < (n); ++i)
#define srep(i,s,t) for(int i = s; i < t; ++i)
#define drep(i,n) for(int i = (n)-1; i >= 0; --i)
using namespace std;
typedef long long int ll;
typedef pair<int,int> P;
#define yn {puts("Yes");}else{puts("No");}
#define MAX_N 200005

// 点(x2,y2)の角度
double nasukaku(double x1, double y1, double x2, double y2, double x3, double y3){
    double a1 = (x1-x2), a2 = (y1-y2);
    double b1 = (x3-x2), b2 = (y3-y2);
    double costheta = (a1*b1+a2*b2)/(sqrt(a1*a1+a2*a2)*sqrt(b1*b1+b2*b2));

    double rad = acos(costheta);
    // return rad; // ラジアン
    return rad * 180.0 / M_PI; // 度数法
}

int main() {
    int n;
    cin >> n;
    double x[n], y[n];
    rep(i,n) cin >> x[i] >> y[i];
    double eps = 1e-12;
    rep(i,n){
        rep(j,n){
            rep(k,n){
                if(i == j || j == k || k == i) continue;
                double a = nasukaku(x[i],y[i],x[j],y[j],x[k],y[k]);
                if(180.0-eps<a&&a<180.0+eps){
                    cout << "Yes" << endl;
                    return 0;
                }
                if(-eps<a&&a<eps){
                    cout << "Yes" << endl;
                    return 0;
                }
            }
        }
    }

    cout << "No" << endl;    
    return 0;
}




#include <iostream>
#include <algorithm>
#define MAX 100
using namespace std;

template <typename T>
bool next_combination(const T first, const T last, int k)
{
    const T subset = first + k;
    // empty container | k = 0 | k == n
    if (first == last || first == subset || last == subset)
    {
        return false;
    }
    T src = subset;
    while (first != src)
    {
        src--;
        if (*src < *(last - 1))
        {
            T dest = subset;
            while (*src >= *dest)
            {
                dest++;
            }
            iter_swap(src, dest);
            rotate(src + 1, dest + 1, last);
            rotate(subset, subset + (last - dest) - 1, last);
            return true;
        }
    }
    // restore
    rotate(first, subset, last);
    return false;
}

int main()
{
    int n;
    double x[MAX], y[MAX];
    int r[100];
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> x[i] >> y[i];

    for (int i = 0; i < 100; i++)
    {
        r[i] = i;
    }

    do
    {
        if (x[r[0]] - x[r[1]] == 0 || x[r[2]] - x[r[0]] == 0)
        {
            if (x[r[0]] - x[r[1]] == 0 && x[r[2]] - x[r[0]] == 0)
            {
                cout << "Yes" << endl;
                return 0;
            }
        }

        else if (((y[r[0]] - y[r[1]]) / (x[r[0]] - x[r[1]])) == ((y[r[2]] - y[r[0]]) / (x[r[2]] - x[r[0]])))
        {
            cout << "Yes" << endl;
            return 0;
        }
    } while (next_combination(r, r + n, 3));

    cout << "No" << endl;
}