#include <bits/stdc++.h>
using namespace std;
long long const mod = 1000000007;
long long mod_fact(int x) {
  static vector<long long> fact = {1, 1};
  if (x < 0) return 1;
  if (x < fact.size()) return fact[x];
  for (int i = fact.size(); i <= x; i++) {
    fact.push_back((fact[i - 1] * i) % mod);
  }
  return fact[x];
}
long long mod_pow(long long a, long long b) {
  long long res = 1;
  a %= mod;
  while (b > 0) {
    if (b % 2 == 1) res = (res * a) % mod;
    a = (a * a) % mod;
    b /= 2;
  }
  return res;
}
long long mod_inv(long long a) { return mod_pow(a, mod - 2); }
long long mod_comb(int a, int b) {
  if (b < 0 || a < b) return 1;
  if (b > a / 2) return mod_comb(a, a - b);
  return (((mod_fact(a) * mod_inv(mod_fact(a - b))) % mod) *
          mod_inv(mod_fact(b))) %
         mod;
}
int main(void) {
  int n;
  long long ans = 0;
  cin >> n;
  vector<int> x(n);
  for (int i = 0; i < n; i++) cin >> x[i];
  if (n > 2000) return 0;
  for (int i = 0; i < n - 1; i++) {
    for (int j = i + 1; j < n; j++) {
      long long d = mod_fact(j - i - 1) * (x[j] - x[i]) % mod;
      long long res = n - 1 - (j - i + 1);
      if (j == n - 1) res++;
      long long v = mod_comb(n - 1, res) * mod_fact(res) % mod;
      ans += d * v % mod;
      ans %= mod;
    }
  }
  cout << ans << endl;
}
