#include <bits/stdc++.h>
using namespace std;
long long n, dp[2005][2005];
struct node {
  long long x, y;
} a[2005];
long long operator*(node aa, node bb) { return aa.x * bb.y - aa.y * bb.x; }
node operator-(node aa, node bb) { return (node){aa.x - bb.x, aa.y - bb.y}; }
long long solve(long long l, long long r) {
  if (dp[l][r] != -1) return dp[l][r];
  long long &ans = dp[l][r];
  ans = 0;
  if (r - l == 1) return ans = 1;
  for (long long i = l + 1; i < r; i++)
    if ((a[l] - a[r]) * (a[i] - a[r]) > 0)
      ans = (ans + 1ll * solve(l, i) * solve(i, r) % 1000000007) % 1000000007;
  return ans;
}
signed main() {
  scanf("%lld", &n);
  memset(dp, -1, sizeof(dp));
  for (long long i = 1; i <= n; i++) scanf("%lld%lld", &a[i].x, &a[i].y);
  long long sum = 0;
  a[n + 1] = a[1];
  for (long long i = 1; i <= n; i++) sum += a[i] * a[i + 1];
  if (sum < 0) reverse(a + 1, a + n + 1);
  printf("%lld\n", solve(1, n));
  return 0;
}
