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

int main() {
  int N;
  cin >> N;
  vector<double> x(N), y(N);
  for (int i = 0; i < N; i++) {
    cin >> x.at(i) >> y.at(i);
  }
  double a;
  for (int i = 0; i < N - 1; i++) {
    set<double> c;
    for (int j = i + 1; j < N; j++) {
      if (x.at(j) == x.at(i)) {
        a = 1000000;
      }
      else {
        a = (y.at(j) - y.at(i)) / (x.at(j) - x.at(i));
      }
      if (c.count(a)) {
        cout << "Yes" << endl;
        return 0;
      }
      c.insert(a);
    }
  }
  cout << "No" << endl;
}

#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
using namespace std;
#define out(x) cout << x << '\n'
#define lli long long int
#define uli unsigned long long int
#define rep(i, m, n) for (lli i = m; i < (n); i++)
#define repe(i, m, n) for (lli i = m; i <= (n); i++)
#define ALL(x) (x).begin(), (x).end()
#define SIZE(x) ((lli)(x).size())
#define MAX(x) *max_element(ALL(x))
#define MIN(x) *min_element(ALL(x))
#define _GLIBCXX_DEBUG
const lli INF = 2147483647;
const lli MINF = -2147483648;
const lli LINF = 9223372036854775807;
const lli MOD = 1000000007; //10^9+7
const double PI = acos(-1);
#define SORT(n) sort(n.begin(), n.end())
#define SORTR(n) sort(n.begin(), n.end(), greater<int>())
#define REV(n) reverse(n.begin(), n.end())
#define pb push_back
#define eb emplace_back
#define mp make_pair
using vi = vector<int>;
using vvi = vector<vi>;
using vvvi = vector<vvi>;
using vlli = vector<lli>;
using vvli = vector<vlli>;
using vs = vector<string>;
using vvs = vector<vs>;
using vb = vector<bool>;
using vvb = vector<vb>;
using ll = long long;
//---------------------------------------------------------------------------------------------------
// vector入力
template <typename T>
istream &operator>>(istream &is, vector<T> &vec)
{
  for (T &x : vec)
    is >> x;
  return is;
}
// vector出力
template <typename T>
ostream &operator<<(ostream &os, vector<T> &vec)
{
  // os << '{';
  for (int i = 0; i < vec.size(); i++)
  {
    os << vec[i] << (i + 1 == vec.size() ? "" : "");
  }
  // os << '}';
  return os;
}
// aよりもbが大きいならばaをbで更新する(更新されたならばtrueを返す)
template <typename T>
bool chmax(T &a, const T &b)
{
  if (a < b)
  {
    a = b; // aをbで更新
    return true;
  }
  return false;
}
// aよりもbが小さいならばaをbで更新する(更新されたならばtrueを返す)
template <typename T>
bool chmin(T &a, const T &b)
{
  if (a > b)
  {
    a = b; // aをbで更新
    return true;
  }
  return false;
}
//---------------------------------------------------------------------------------------------------
lli gcd(lli a, lli b)
{
  while (b)
  {
    lli c = b;
    b = a % b;
    a = c;
  }
  return a;
}
//---------------------------------------------------------------------------------------------------
void solve()
{
}

//---------------------------------------------------------------------------------------------------
signed main()
{
  lli a = 0, b = 0, c = 0, h = 0, n = 0, w = 0, ans = 0, count = 0;
  string s = "", t = "";
  vector<pair<lli, lli>> pr;
  pair<lli, lli> A, B, C;
  map<lli, lli> ma;
  map<lli, lli> ma2;
  set<lli> st;

  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n;

  lli x, y;
  double X[n];
  double Y[n];
  bool ff = false;
  rep(i, 0, n)
  {
    cin >> X[i] >> Y[i];
    // ma[x]++;
    // ma2[y]++;
    // pr.eb(mp(x, y));
    // d[i].pb(x);
    // d[i].pb(y);
    // X.pb(x);
    // Y.pb(y);
  }
  // for (auto z : ma)
  // {
  //   if (z.second >= 3)
  //   {
  //     out("Yes");
  //     return 0;
  //   }
  // }
  // for (auto z : ma2)
  // {
  //   if (z.second >= 3)
  //   {
  //     out("Yes");
  //     return 0;
  //   }
  // }
  rep(i, 0, n - 2)
  {
    rep(j, i + 1, n - 1)
    {
      rep(k, j + 1, n)
      {
        if ((Y[j] - Y[i]) * (X[k] - X[j]) == (Y[k] - Y[j]) * (X[j] - X[i]))
        {
          out("Yes");
          return 0;
        }
      }
    }
  }
  out("No");
}