
// Problem : C - Collinearity
// Contest : AtCoder - AtCoder Beginner Contest 181
// URL : https://atcoder.jp/contests/abc181/tasks/abc181_c
// Memory Limit : 1024 MB
// Time Limit : 2000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

//#pragma GCC optimize("Ofast")
//#pragma GCC optimize ("unroll-loops")
//#pragma GCC target("avx,avx2,fma")
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define eb emplace_back
#define pb push_back
#define size(s) (int)s.size()
#define int long long
#define INF 1000000000000000000
#define vi vector<int>
#define vs vector<string>
#define vv vector<vector<int>>
#define pii pair<int,int>
#define m_p(x,y) make_pair(x,y)
#define vp vector<pair<int,int>>
#define setbits(x) __builtin_popcountll(x)
#define f first
#define se second
#define inc(v,n,x) v.assign(n,x)
#define incd(v,n) v.resize(n)
#define iniz(n) memset(n,0,sizeof(n))
#define inin(n) memset(n,-1,sizeof(n))
#define inimi(n) memset(n,0xc0,sizeof(n))
#define inima(n) memset(n,0x3f,sizeof(n))
#define all(v) (v).begin(),(v).end()

using namespace std;

template<typename T1,typename T2>istream &operator>>(istream &is, vector<pair<T1,T2>> &v) { for (pair<T1,T2> &t : v) is >> t.f>>t.se; return is; }
template<typename T>istream &operator>>(istream &is, vector<T> &v) { for (T &t : v) is >> t; return is; }
template<typename T>ostream &operator<<(ostream &os, const vector<T> &v) { for (const T &t : v) {os << t <<" ";} os << '\n'; return os; }

double pi=acos(-1.0);
int md=1e9+7;
int dx1[]={0,0,-1,1};
int dy1[]={1,-1,0,0};
const int N=3e5+5;

template<class T>
T abst(T a)
{return a<0?-a:a;}

void solve()
{
	int n;cin>>n;
	vp v(n);cin>>v;
	bool b=false;
	//x1 (y2  - y3) + x2 (y3 - y1) + x3 (y1 - y2) =0
	for(int i=0;i<n;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			for(int k=j+1;k<n;k++)
			{
				if(v[i].f*(v[j].se-v[k].se)+v[j].f*(v[k].se-v[i].se)+v[k].f*(v[i].se-v[j].se)==0)
				b=true;
			}
		}
	}
	if(b)
	cout<<"Yes";
	else
	cout<<"No";
}

int32_t main(){
ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL);
int t=1;
//cin>>t;
for(int i=1;i<=t;i++)
{
    solve();
}
return 0;
}

#include <algorithm>
#include <iostream>
#include <map>
#include <memory>
#include <string>
#include <vector>

#include "float.h"

#define rep(inc, bgn, end) for (int inc = bgn; inc < end; ++inc)
#define repe(inc, bgn, end) for (int inc = bgn; inc <= end; ++inc)

#define INT_MAX 1000000000

using ll = long long;
using namespace std;

//
int main() {
    int N;
    cin >> N;

    struct Point {
        int x;
        int y;
    };

    vector<Point> points(N);

    rep(idx, 0, N) {
        cin >> points[idx].x >> points[idx].y;
    }

    rep(fstIdx, 0, N) {
        Point fstVal = points[fstIdx];
        rep(scdIdx, fstIdx + 1, N) {
            Point scdVal = points[scdIdx];
            rep(thdIdx, scdIdx + 1, N) {
                Point thdVal = points[thdIdx];
                auto level1 = fstVal.x == scdVal.x
                                  ? FLT_MAX
                                  : (fstVal.y - scdVal.y) / (float)(fstVal.x - scdVal.x);
                auto level2 = fstVal.x == thdVal.x
                                  ? FLT_MAX
                                  : (fstVal.y - thdVal.y) / (float)(fstVal.x - thdVal.x);
                if (level1 == level2) {
                    cout << "Yes" << endl;
                    return 0;
                }
            }
        }
    }

    cout << "No" << endl;

    return 0;
}
