#include <bits/stdc++.h>
using namespace std;
vector<long long> fac;
const long long mod = 1000000007;
long long modpow(long long b, long long e) {
  long long ans = 1;
  for (; e; b = b * b % mod, e /= 2)
    if (e & 1) ans = ans * b % mod;
  return ans;
}
long long inv(long long n) { return modpow(n, mod - 2); }
long long c(long long n, long long k) {
  return ((fac[n] * inv(fac[k]) % mod) * inv(fac[n - k])) % mod;
}
int main() {
  cin.sync_with_stdio(0);
  cin.tie(0);
  cin.exceptions(cin.failbit);
  fac.push_back(1);
  for (int i = (1); i < (112345); ++i) fac.push_back(fac[i - 1] * i % mod);
  long long n;
  cin >> n;
  vector<long long> x(n + 1);
  for (int i = (1); i < (n + 1); ++i) cin >> x[i];
  long long ans = 0;
  for (int i = (2); i < (n + 1); ++i) {
    for (int j = (1); j < (i); ++j) {
      if (i == n)
        ans += (((x[i] - x[j]) * fac[i - j - 1] % mod) * fac[j - 1] % mod) *
               c(i - 1, i - j) % mod;
      else
        ans += (((x[i] - x[j]) * fac[i - j - 1] % mod) * fac[n - i + j - 2] %
                mod) *
               c(n - 1, i - j + 1) % mod;
      ans %= mod;
    }
  }
  cout << ans << endl;
}
