#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
const int maxn = 1001000;
int n;
long long x[maxn], y[maxn];
long long g[maxn];
long long sum1[maxn], sum2[maxn];
long long sumx[maxn], sumy[maxn];
long long ans;
int choice[maxn];
long long cross(int a, int b) { return x[a] * y[b] - y[a] * x[b]; }
long long cal(int a, int b) {
  long long s1 = sum1[b - 1] - sum1[a - 1];
  long long s2 = sum2[b - 1] - sum2[a - 1];
  long long ans1 = ((long long)(b)*s1 % mod - s2 + mod) % mod;
  long long x1 = sumx[b] - sumx[a], y1 = sumy[b] - sumy[a];
  long long ans2 = (-x1 * y[a] % mod + y1 * x[a] % mod + mod) % mod;
  return (ans1 + ans2) % mod;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%I64d%I64d", &x[i], &y[i]);
  for (int i = n + 1; i <= 2 * n; i++) x[i] = x[i - n], y[i] = y[i - n];
  sumx[0] = sumy[0] = 0;
  for (int i = 1; i <= 2 * n; i++) {
    sumx[i] = (sumx[i - 1] + x[i]) % mod;
    sumy[i] = (sumy[i - 1] + y[i]) % mod;
  }
  for (int i = 1; i < 2 * n; i++) g[i] = cross(i + 1, i) % mod;
  sum1[0] = sum2[0] = 0;
  for (int i = 1; i <= 2 * n; i++) {
    sum1[i] = (sum1[i - 1] + g[i]) % mod;
    sum2[i] = (sum2[i - 1] + i * g[i] % mod) % mod;
  }
  long long S = 0;
  for (int i = 1; i <= n; i++) {
    S += cross(i + 1, i);
  }
  int tot = 2;
  long long tmpS = cross(2, 1);
  for (int i = 1; i <= n; i++) {
    while (tmpS + cross(i, tot) <= S / 2.0) {
      if (tmpS + cross(i, tot) == S / 2.0 && tot > n) break;
      tot++;
      tmpS += cross(tot, tot - 1);
    }
    choice[i] = tot - 1;
    tmpS -= cross(i + 1, i);
  }
  ans = 0;
  for (int i = 1; i <= n; i++) {
    ans = (ans + cal(i, choice[i])) % mod;
  }
  S %= mod;
  ans = ((long long)(n) * (n - 3) / 2 % mod * S % mod - 2 * ans % mod + mod) %
        mod;
  printf("%I64d\n", ans);
  return 0;
}
