#include <bits/stdc++.h>
using namespace std;
long long mod = 1000000007;
long long pow(long long x, long long k) {
  if (k == 0) {
    return 1LL;
  }
  long long temp = pow(x, k / 2);
  if (k % 2 == 1) {
    return (((temp * temp) % mod) * x) % mod;
  } else {
    return (temp * temp) % mod;
  }
}
long long modular_inverse(long long x) { return pow(x, mod - 2); }
long long binomial(long long n, long long k) {
  long long rez = 1;
  for (int i = n - k + 1; i <= n; i++) {
    rez *= i;
    rez %= mod;
  }
  long long temp = 1;
  for (int i = 1; i <= k; i++) {
    temp *= i;
    temp %= mod;
  }
  rez *= modular_inverse(temp);
  rez %= mod;
  return rez;
}
int main() {
  long long inv2 = modular_inverse(2);
  long long n;
  cin >> n;
  vector<long long> v(n), ev(n);
  for (int i = 0; i < n; i++) {
    cin >> v[i];
  }
  ev[n - 1] = 0;
  for (int i = n - 2; i >= 0; i--) {
    ev[i] = (inv2 * ev[i + 1] + v[i + 1] - v[i]) % mod;
  }
  long long rez = 0;
  for (int i = 0; i < n; i++) {
    rez += ev[i];
    rez %= mod;
  }
  for (int i = 2; i < n; i++) {
    rez *= i;
    rez %= mod;
  }
  cout << rez << '\n';
  return 0;
}
