#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)

int main(){
  cin.tie(nullptr);
  ios::sync_with_stdio(false);

int n;
cin >> n;
vector<double> x(n),y(n);
rep(i,n)cin >> x[i] >> y[i];
for (int i = 0; i < n-2; i++)
{
    for (int j = i+1; j < n-1; j++)
    {
        for (int k = j+1; k < n; k++)
        {
            if(x[i]==x[j]&&x[i]==x[k]){
                cout << "Yes" << endl;
                return 0;
            }
            else if((double)(y[i]-y[j])/(x[i]-x[j])==(double)(y[i]-y[k])/(x[i]-x[k])){
             cout << "Yes" << endl;
             return 0;
            }
        }
        
    }
    
}
cout << "No" << endl;
 return 0;
}



#include <bits/stdc++.h>
using namespace std;

//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
//using namespace __gnu_pbds;
//typedef tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> index_set;
//typedef tree<ll, null_type, less_equal<ll>, rb_tree_tag, tree_order_statistics_node_update>indexed_multiset;

#define ull         unsigned long long
#define ll          long long int
#define ld          long double
#define MOD         1000000007
#define pi          3.14159265358979323846
#define N           100005
#define sz(x)       ((int)(x).size())
#define test ll t;  cin >> t; while(t--)
#define all(x)      (x).begin(), (x).end()
#define ld          long double
#define bigint      int64_t
#define vll         vector<ll>
#define vpll        vector<pair<ll,ll>>
//#define mp          make_pair
#define pb          push_back
#define pll         pair<ll,ll>
#define vvll        vector<vector<ll>>
#define fi          first
#define se          second
#define ins         insert
#define endl        "\n"
#define rep(i,a,n)  for(ll (i) = a;(i) < (n); (i)++)
#define repn(i,a,n) for(ll (i) = a;(i) <= (n); (i)++)
#define repr(i,a,n) for(ll (i) = a;(i) >= (n); (i)--)

//-------------------DEBUGGING-----------------------

vector<string> vec_splitter(string s) {
    s += ',';
    vector<string> res;
    while (!s.empty()) {
        res.push_back(s.substr(0, s.find(',')));
        s = s.substr(s.find(',') + 1);
    }
    return res;
}
void debug_out(
    vector<string> __attribute__ ((unused)) args,
    __attribute__ ((unused)) int idx,
    __attribute__ ((unused)) int LINE_NUM) { cerr << endl; }
template <typename Head, typename... Tail>
void debug_out(vector<string> args, int idx, int LINE_NUM, Head H, Tail... T) {
    if (idx > 0) cerr << ", "; else cerr << "Line(" << LINE_NUM << ") ";
    stringstream ss; ss << H;
    cerr << args[idx] << " = " << ss.str();
    debug_out(args, idx + 1, LINE_NUM, T...);
}
#ifdef XOX
#define debug(...) debug_out(vec_splitter(#__VA_ARGS__), 0, __LINE__, __VA_ARGS__)
#else
#define debug(...) 42
#endif
//-----------------------------------------------------------------------

//will upsolve from now on. Date: 24th Oct 2020, DIV2 round 678 upto D.

void solve() {
    ll n; cin >> n;
    vpll v;
    rep(i, 0, n) {
        ll x, y;
        cin >> x >> y;
        v.pb({x, y});
    }
    sort(all(v));
    repn(i, 0, n - 3) {
        repn(j, i + 1, n - 2) {
            repn(k, j + 1, n - 1) {
                ll a = v[i].fi, b = v[i].se;
                ll c = v[j].fi, d = v[j].se;
                ll e = v[k].fi, f = v[k].se;
                ll k1 = d - b, k2 = c - a, k3 = f - d, k4 = e - c;
                //if (k2 > 0 && k4 > 0) {
                if ((double)k1 / k2 == (double)k3 / k4 ) {
                    cout << "Yes\n";
                    return;
                }
                //}
            }
        }
    }
    cout << "No\n";
}


int main() {


    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    solve();
    return 0;
}