#include <bits/stdc++.h>
using namespace std;
const long long N = 205, P = 1e9 + 7ll;
struct node {
  long long x, y;
  node operator-(const node &t) const {
    node c;
    c.x = x - t.x;
    c.y = y - t.y;
    return c;
  }
  long long operator*(const node &t) const { return x * t.y - y * t.x; }
} p[N];
long long n, dp[N][N];
long long search(long long x, long long y) {
  long long ans = 0;
  if (dp[x][y] != -1) return dp[x][y];
  if (x + 1 == y) return dp[x][y] = 1;
  for (int i = x + 1; i < y; i++)
    if ((p[x] - p[i]) * (p[y] - p[i]) > 0)
      ans = (ans + search(x, i) * search(i, y) % P) % P;
  return dp[x][y] = ans;
}
int main() {
  memset(dp, -1, sizeof dp);
  scanf("%dll", &n);
  for (int i = 1; i <= n; i++) scanf("%lld%lld", &p[i].x, &p[i].y);
  p[n + 1] = p[1];
  long long s = 0;
  for (int i = 1; i <= n; i++) s += p[i + 1] * p[i];
  if (s < 0)
    for (int i = 1, j = n; i < j; swap(p[i++], p[j--]))
      ;
  printf("%lld", search(1, n));
  return 0;
}
