#include <bits/stdc++.h>
using namespace std;
using point = complex<long long>;
const int N = 200, M = 1000000007;
struct mint {
  int x;
  mint() : x(0) {}
  template <class T>
  mint(T value) : x(value % M) {
    if (x < 0) x += M;
  }
  mint &operator+=(const mint &oth) {
    x += oth.x;
    if (x >= M) x -= M;
    return *this;
  }
  mint &operator-=(const mint &oth) {
    x -= oth.x;
    if (x < 0) x += M;
    return *this;
  }
  mint &operator*=(const mint &oth) {
    x = (long long)x * oth.x % M;
    return *this;
  }
  friend mint operator+(mint l, const mint &r) { return l += r; }
  friend mint operator-(mint l, const mint &r) { return l -= r; }
  friend mint operator*(mint l, const mint &r) { return l *= r; }
  mint &operator--() {
    if (--x == -1) x = M - 1;
    return *this;
  }
  mint &operator++() {
    if (++x == M) x = 0;
    return *this;
  }
  mint operator--(int) {
    mint temp = *this;
    --*this;
    return temp;
  }
  mint operator++(int) {
    mint temp = *this;
    ++*this;
    return temp;
  }
  mint operator-() const { return 0 - *this; }
  mint operator+() const { return *this; }
  friend bool operator==(const mint &l, const mint &r) { return l.x == r.x; }
  friend bool operator!=(const mint &l, const mint &r) { return l.x != r.x; }
  friend ostream &operator<<(ostream &out, const mint &a) { return out << a.x; }
  mint pow(long long e = M - 2) const {
    mint ans = 1, b = *this;
    while (e > 0) {
      if (e % 2 == 1) {
        ans *= b;
      }
      b *= b;
      e /= 2;
    }
    return ans;
  }
};
mint ways[N][N];
point p[N];
long long cross(point a, point b) {
  return a.real() * b.imag() - a.imag() * b.real();
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  int n;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    int x, y;
    cin >> x >> y;
    p[i] = point(x, y);
  }
  long long area = 0;
  for (int i = 0; i < n; ++i) {
    area += cross(p[i], p[(i + 1) % n]);
  }
  if (area < 0) {
    reverse(p, p + n);
  }
  for (int i = n - 2; i >= 0; --i) {
    ways[i][i + 1] = 1;
    for (int j = i + 2; j < n; ++j) {
      for (int k = i + 1; k < j; ++k) {
        if (cross(p[i], p[k]) + cross(p[k], p[j]) + cross(p[j], p[i]) > 0) {
          ways[i][j] += ways[i][k] * ways[k][j];
        }
      }
    }
  }
  cout << ways[0][n - 1] << "\n";
}
