#include <bits/stdc++.h>
using namespace std;
struct point {
  long long int x, y;
  long long int operator*(const point& c) const { return x * c.y - y * c.x; }
  point operator-(const point& c) const { return (point){x - c.x, y - c.y}; }
} p[205];
int n;
long long int dp[205][205];
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%lld%lld", &p[i].x, &p[i].y);
  }
  long long int tmp = p[n] * p[1];
  for (int i = 1; i < n; i++) tmp += p[i] * p[i + 1];
  if (tmp < 0) {
    reverse(p + 1, p + n + 1);
  }
  for (int i = 1; i < n; i++) dp[i][i + 1] = 1;
  for (int k = 2; k < n; k++)
    for (int i = 1; i + k <= n; i++)
      for (int j = 1; j < k; j++) {
        if ((p[i + j] - p[i]) * (p[i + k] - p[i]) > 0) {
          dp[i][i + k] =
              (dp[i][i + k] + (dp[i][i + j] * dp[i + j][i + k])) % 1000000007;
        }
      }
  printf("%lld\n", dp[1][n]);
  return 0;
}
