#include <bits/stdc++.h>
const int INF = 2147483647;
const long long int MOD = 1000000007;
using namespace std;
long long int modpow(long long int a, long long int n, long long int mod) {
  long long int res = 1;
  while (n > 0) {
    if (n & 1) res = res * a % mod;
    a = a * a % mod;
    n >>= 1;
  }
  return res;
}
long long int modinv(long long int a, long long int mod) {
  return modpow(a, mod - 2, mod);
}
long long int modnCr(long long int n, long long int r, long long int mod) {
  long long int ans = 1;
  for (int i = 1; i < n + 1; i++) {
    ans = (ans * i) % mod;
  }
  long long int inv = 1;
  for (int i = 1; i < r + 1; i++) {
    inv = (inv * i) % mod;
  }
  for (int i = 1; i < n - r + 1; i++) {
    inv = (inv * i) % mod;
  }
  ans = (ans * modinv(inv, mod)) % mod;
  return ans;
}
int main() {
  int n;
  cin >> n;
  if (n > 2000) {
    cout << 0 << endl;
    return 0;
  }
  vector<long long int> x(n);
  for (int i = 0; i < n; i++) {
    cin >> x[i];
  }
  vector<long long int> d(n - 1);
  for (int i = 0; i < n - 1; i++) {
    d[i] = x[i + 1] - x[i];
  }
  vector<long long int> cum(n);
  cum[0] = 0LL;
  for (int i = 0; i < n - 1; i++) {
    cum[i + 1] = cum[i] + d[i];
  }
  vector<long long int> ex(2005);
  ex[0] = 1LL;
  for (long long int i = 1; i < ex.size(); i++) {
    ex[i] = (i * ex[i - 1]) % MOD;
  }
  long long int ans = 0LL;
  for (long long int i = 0LL; i < n - 1; i++) {
    for (long long int j = i + 1; j < n - 1; j++) {
      long long int tmp = cum[j] - cum[i];
      long long int tmp2 = ex[n - 1] * modinv((j - i + 1) * (j - i), MOD) % MOD;
      ans = (ans + (tmp * tmp2) % MOD) % MOD;
    }
    ans = (ans + ((cum[n - 1] - cum[i]) *
                  ((ex[n - 1] * modinv(n - 1 - i, MOD)) % MOD)) %
                     MOD) %
          MOD;
  }
  cout << ans << endl;
}
