#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const int maxn = 250;
struct point {
  long long x, y;
  long long operator*(const point& b) { return x * b.y - y * b.x; }
  point operator-(const point& b) const {
    point u;
    u.x = x - b.x;
    u.y = y - b.y;
    return u;
  }
} a[maxn];
int n;
long long dp[maxn][maxn];
void init() {
  scanf("%d", &n);
  memset(dp, -1, sizeof(dp));
  for (int i = 0; i < n; i++) scanf("%I64d%I64d", &a[i].x, &a[i].y);
  long long tmp = 0;
  a[n] = a[0];
  for (int i = 0; i < n; i++) tmp += a[i] * a[i + 1];
  if (tmp < 0) reverse(a, a + n);
}
long long solve(int l, int r) {
  if (dp[l][r] != -1) return dp[l][r];
  if (r - l == 1) return dp[l][r] = 1;
  long long ans = 0;
  for (int i = l + 1; i < r; i++)
    if ((a[l] - a[r]) * (a[i] - a[r]) > 0)
      ans = (ans + solve(l, i) * solve(i, r)) % mod;
  return dp[l][r] = ans;
}
int main() {
  init();
  cout << solve(0, n - 1) << endl;
}
