#include <bits/stdc++.h>
using namespace std;
struct P {
  long long x, y;
  P(long long _ = 0, long long $ = 0) { x = _, y = $; }
} p[205];
P operator-(P _, P $) { return P(_.x - $.x, _.y - $.y); }
long long operator*(P _, P $) { return _.x * $.y - _.y * $.x; }
int dp[205][205], n;
int dfs(int l, int r) {
  if (l + 1 == r) return 1;
  if (~dp[l][r]) return dp[l][r];
  for (int k = l + 1; k < r; k++)
    if ((p[l] - p[r]) * (p[k] - p[r]) > 0)
      dp[l][r] = (dp[l][r] + 1ll * dfs(l, k) * dfs(k, r)) % 1000000007;
  return ++dp[l][r];
}
int main() {
  scanf("%d", &n);
  long long s = 0;
  memset(dp, -1, sizeof(dp));
  for (int i = 1; i <= n; i++) scanf("%lld%lld", &p[i].x, &p[i].y);
  for (int i = 2; i < n; i++) s += (p[i] - p[1]) * (p[i + 1] - p[1]);
  if (s < 0) reverse(p + 2, p + 1 + n);
  printf("%d", dfs(1, n));
}
