#include <bits/stdc++.h>
using namespace std;
template <typename A, typename B>
ostream &operator<<(ostream &s, const pair<A, B> &p) {
  return s << "(" << p.first << "," << p.second << ")";
}
template <typename T>
ostream &operator<<(ostream &s, const vector<T> &c) {
  s << "[ ";
  for (auto it : c) s << it << " ";
  s << "]";
  return s;
}
const int MAXN = 1010101;
const long long MOD = 1000000007;
const long long INV2 = (MOD + 1) / 2;
int N;
pair<long long, long long> pt[MAXN], psum[MAXN];
long long A, A2;
pair<long long, long long> operator+(pair<long long, long long> a,
                                     pair<long long, long long> b) {
  return {a.first + b.first, a.second + b.second};
}
pair<long long, long long> operator-(pair<long long, long long> a,
                                     pair<long long, long long> b) {
  return {a.first - b.first, a.second - b.second};
}
pair<long long, long long> operator*(pair<long long, long long> a,
                                     long long b) {
  return {a.first * b, a.second * b};
}
long long cross(pair<long long, long long> a, pair<long long, long long> b) {
  return a.first * b.second - a.second * b.first;
};
pair<long long, long long> operator%(pair<long long, long long> a,
                                     long long b) {
  return {a.first % b, a.second % b};
}
void calc_area() {
  A = 0;
  for (int i = 0; i < N; i++) A += cross(pt[i], pt[(i + 1) % N]);
}
void calc_sum() {
  psum[0] = {0, 0};
  for (int i = 0; i < 2 * N; i++) {
    psum[i + 1] = (psum[i] + pt[i]) % MOD;
  }
}
long long calc() {
  calc_area();
  calc_sum();
  long long j = 1;
  long long cura = 0;
  long long tota = 0;
  long long tottota = 0;
  long long hafa = 0;
  for (int i = 0; i < N; i++) {
    while (1) {
      long long da = cross(pt[j] - pt[i], pt[j + 1] - pt[i]);
      long long newa = cura + da;
      if (newa > A - newa) break;
      if (newa == A - newa) hafa = (hafa + newa) % MOD;
      cura += da;
      tota = (tota + cura) % MOD;
      j++;
    }
    tottota += tota;
    tottota %= MOD;
    pair<long long, long long> s =
        (psum[j + 1] - psum[i + 1] - pt[i] * (j - i)) % MOD;
    tota -= cross(pt[i + 1] - pt[i], s);
    tota %= MOD;
    cura -= cross(pt[i + 1] - pt[i], pt[j] - pt[i]);
  }
  long long ans = (N * (N - 3LL)) / 2;
  ans = ((ans % MOD) * (A % MOD)) % MOD;
  ans -= 2 * tottota - hafa;
  ans %= MOD;
  if (ans < 0) ans += MOD;
  return ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> N;
  for (int i = 0; i < N; i++) cin >> pt[i].first >> pt[i].second;
  reverse(pt, pt + N);
  for (int i = 0; i < N; i++) pt[N + i] = pt[i];
  long long ans = calc();
  cout << ans << endl;
  return 0;
}
