#include <bits/stdc++.h>
using namespace std;
int n, dp[205][205], M = 1e9 + 7;
struct point {
  long long x, y;
  struct point operator-(struct point A) {
    struct point t;
    t.x = x - A.x;
    t.y = y - A.y;
    return t;
  };
  long long operator*(struct point A) { return x * A.y - y * A.x; }
} p[205];
long long dfs(int l, int r) {
  if (dp[l][r] != -1) return dp[l][r];
  if (r - l <= 1) return dp[l][r] = 1;
  dp[l][r] = 0;
  for (int i = l + 1; i < r; i++) {
    if ((p[l] - p[r]) * (p[i] - p[r]) > 0) {
      dp[l][r] = (dp[l][r] + dfs(l, i) * dfs(i, r)) % M;
    }
  }
  return dp[l][r];
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> p[i].x >> p[i].y;
  long long temp = 0;
  for (int i = 2; i < n; i++) temp += (p[i - 1] - p[0]) * (p[i] - p[0]);
  if (temp < 0) {
    for (int i = 0; i < n / 2; i++) swap(p[i], p[n - i - 1]);
  }
  memset(dp, -1, sizeof(dp));
  cout << dfs(0, n - 1) << endl;
  return 0;
}
