#include <bits/stdc++.h>
using namespace std;
const int N = 205, P = 1000000007;
using ll = long long;
struct Point {
  int x, y;
};
Point operator+(const Point &a, const Point &b) {
  return {a.x + b.x, a.y + b.y};
}
Point operator-(const Point &a, const Point &b) {
  return {a.x - b.x, a.y - b.y};
}
ll cross(const Point &a, const Point &b) {
  return a.x * 1ll * b.y - a.y * 1ll * b.x;
}
int n;
ll dp[N][N];
Point a[N];
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> a[i].x >> a[i].y;
  ll sum = cross(a[n], a[1]);
  for (int i = 1; i < n; i++) sum += cross(a[i], a[i + 1]);
  if (sum < 0) reverse(a + 1, a + n + 1);
  for (int i = 1; i < n; i++) dp[i][i + 1] = 1;
  for (int l = 3; l <= n; l++)
    for (int i = 1; i + l - 1 <= n; i++) {
      int j = i + l - 1;
      for (int k = i + 1; k < j; k++)
        if (cross(a[k] - a[i], a[j] - a[k]) > 0)
          dp[i][j] = (dp[i][j] + dp[i][k] * dp[k][j] % P) % P;
    }
  cout << dp[1][n] << endl;
  return 0;
}
