#include <bits/stdc++.h>
using namespace std;
int read() {
  char c = getchar();
  while (c != '-' && !isdigit(c)) c = getchar();
  int neg = 0;
  if (c == '-') neg = 1, c = getchar();
  int num = 0;
  while (isdigit(c)) num = num * 10 + c - '0', c = getchar();
  return neg ? -num : num;
}
long long x[1000001], y[1000001];
long long cross(long long x1, long long y1, long long x2, long long y2) {
  x1 = (x1 % 1000000007 + 1000000007) % 1000000007,
  y1 = (y1 % 1000000007 + 1000000007) % 1000000007;
  x2 = (x2 % 1000000007 + 1000000007) % 1000000007,
  y2 = (y2 % 1000000007 + 1000000007) % 1000000007;
  return ((x1 * y2 - x2 * y1) % 1000000007 + 1000000007) % 1000000007;
}
long long nomod_cross(long long x1, long long y1, long long x2, long long y2) {
  return x1 * y2 - x2 * y1;
}
long long S[1000001], iS[1000001];
long long prex[1000001], prey[1000001];
int main() {
  int n = read();
  x[1] = read(), y[1] = read();
  for (int i = 2; i <= n; i++) x[n - i + 2] = read(), y[n - i + 2] = read();
  for (int i = 1; i <= n; i++) x[i + n] = x[i], y[i + n] = y[i];
  long long S0 = 0;
  for (int i = 1; i <= n; i++)
    S0 += nomod_cross(x[i], y[i], x[i + 1], y[i + 1]);
  for (int i = 1; i < n * 2; i++)
    S[i] = cross(x[i], y[i], x[i + 1], y[i + 1]), iS[i] = S[i] * i % 1000000007;
  for (int i = 1; i <= n * 2; i++)
    prex[i] = (prex[i - 1] + 1000000007 + x[i] % 1000000007) % 1000000007,
    prey[i] = (prey[i - 1] + 1000000007 + y[i] % 1000000007) % 1000000007;
  for (int i = 1; i < n * 2; i++)
    S[i] = (S[i] + S[i - 1]) % 1000000007,
    iS[i] = (iS[i] + iS[i - 1]) % 1000000007;
  int p = 1, ans = 0, cnt = 0;
  long long ns = 0;
  for (int i = 1; i <= n; i++) {
    long long add =
        nomod_cross(x[p] - x[i], y[p] - y[i], x[p + 1] - x[i], y[p + 1] - y[i]);
    while (ns + add < (S0 + 1) / 2)
      ns += add, ++p,
          add = nomod_cross(x[p] - x[i], y[p] - y[i], x[p + 1] - x[i],
                            y[p + 1] - y[i]);
    ans = (ans + p * (1000000007 + S[p] - S[i - 1]) + 1000000007 -
           (1000000007 + iS[p] - iS[i - 1]) % 1000000007 + 1000000007 -
           cross(x[i], y[i], prex[p] - prex[i - 1], prey[p] - prey[i - 1]) %
               1000000007) %
          1000000007;
    ns -= nomod_cross(x[p] - x[i + 1], y[p] - y[i + 1], x[i] - x[i + 1],
                      y[i] - y[i + 1]);
    cnt = (cnt + p - i - 1) % 1000000007;
  }
  cout << (S0 % 1000000007 * cnt % 1000000007 + 1000000007 -
           2ll * ans % 1000000007) %
              1000000007
       << endl;
}
