#include <bits/stdc++.h>
using namespace std;
int n;
long long a[1005];
bool vis[1005];
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &a[i]);
  }
  memset(vis, 0, sizeof(vis));
  long long d1 = a[2] - a[1], d2 = a[3] - a[2];
  if (d1 == d2) {
    vis[1] = vis[2] = vis[3] = 1;
    for (int i = 4; i <= n; i++) {
      if (a[i] - a[1] == d1 * (i - 1)) vis[i] = 1;
    }
    int j;
    for (j = 1; j <= n; j++) {
      if (!vis[j]) break;
    }
    if (j == n + 1) {
      printf("No\n");
      return 0;
    }
    vis[j] = 1;
    for (int i = 4; i <= n; i++) {
      if (!vis[i]) {
        if (a[i] - a[j] == d1 * (i - j)) vis[i] = 1;
      }
    }
    for (int i = 1; i <= n; i++) {
      if (!vis[i]) {
        printf("No\n");
        return 0;
      }
    }
    printf("Yes\n");
  } else {
    bool flag = true;
    long long d = d1;
    vis[1] = vis[2] = 1;
    for (int i = 3; i <= n; i++) {
      if (a[i] - a[1] == d * (i - 1)) vis[i] = 1;
    }
    int j;
    for (j = 1; j <= n; j++) {
      if (!vis[j]) break;
    }
    if (j == n + 1) {
      printf("No\n");
      return 0;
    }
    vis[j] = 1;
    for (int i = 3; i <= n; i++) {
      if (!vis[i]) {
        if (a[i] - a[j] == d * (i - j)) vis[i] = 1;
      }
    }
    for (int i = 1; i <= n; i++) {
      if (!vis[i]) {
        flag = false;
      }
    }
    if (flag) {
      printf("Yes\n");
      return 0;
    }
    flag = true;
    d = d2;
    memset(vis, 0, sizeof(vis));
    vis[2] = vis[3] = 1;
    for (int i = 1; i <= n; i++) {
      if (a[i] - a[2] == d * (i - 2)) vis[i] = 1;
    }
    for (j = 1; j <= n; j++) {
      if (!vis[j]) break;
    }
    if (j == n + 1) {
      printf("No\n");
      return 0;
    }
    vis[j] = 1;
    for (int i = 1; i <= n; i++) {
      if (!vis[i]) {
        if (a[i] - a[j] == d * (i - j)) vis[i] = 1;
      }
    }
    for (int i = 1; i <= n; i++) {
      if (!vis[i]) {
        flag = false;
      }
    }
    if (flag) {
      printf("Yes\n");
      return 0;
    }
    flag = true;
    d = a[3] - a[1];
    memset(vis, 0, sizeof(vis));
    vis[1] = vis[3] = 1;
    for (int i = 2; i <= n; i++) {
      if ((a[i] - a[1]) * 2 == d * (i - 1)) vis[i] = 1;
    }
    for (j = 1; j <= n; j++) {
      if (!vis[j]) break;
    }
    if (j == n + 1) {
      printf("No\n");
      return 0;
    }
    vis[j] = 1;
    for (int i = 1; i <= n; i++) {
      if (!vis[i]) {
        if ((a[i] - a[j]) * 2 == d * (i - j)) vis[i] = 1;
      }
    }
    for (int i = 1; i <= n; i++) {
      if (!vis[i]) {
        flag = false;
      }
    }
    if (flag)
      printf("Yes\n");
    else
      printf("No\n");
  }
  return 0;
}
