#include <bits/stdc++.h>
const long long MOD = 1000000007ll;
const int MAX = 5100000;
using namespace std;
int inputValue() {
  int a;
  cin >> a;
  return a;
};
void inputArray(int* p, int a) {
  for (int i = (0); i < (a); i++) {
    cin >> p[i];
  }
};
void inputVector(vector<int>* p, int a) {
  for (int i = (0); i < (a); i++) {
    int input;
    cin >> input;
    p->push_back(input);
  }
}
long long fact[MAX], fact_inv[MAX];
long long power(long long a, long long b) {
  long long res = 1;
  while (b > 0) {
    if (b & 1) res = res * a % MOD;
    a = a * a % MOD;
    b >>= 1;
  }
  return res;
}
long long comb(long long n, long long r) {
  long long t = 1000000;
  fact[0] = 1;
  for (int i = 0; i < (t); ++i) fact[i + 1] = fact[i] * (i + 1) % MOD;
  fact_inv[t] = power(fact[t], MOD - 2);
  for (int i = (t)-1; i >= (0); --i)
    fact_inv[i] = fact_inv[i + 1] * (i + 1) % MOD;
  return (fact[n] * fact_inv[r]) % MOD * fact_inv[n - r] % MOD;
}
int main() {
  int i, j;
  int N;
  cin >> N;
  if (N > 2000) {
    return 0;
  }
  long long X[N];
  for (int i = (0); i < (N); i++) {
    cin >> X[i];
  }
  long long dist[N - 1];
  long long multi[N - 1];
  for (int i = (0); i < (N - 1); i++) {
    multi[i] = 1;
  }
  long long ans = 0;
  for (i = N - 2; i >= 0; i--) {
    dist[N - 2 - i] = X[N - 1] - X[i];
  }
  for (int i = 0; i < (N - 1); ++i) {
    for (int j = (1); j < (N); ++j) {
      if (i + j != N - 1) {
        multi[i] *= j;
        multi[i] %= MOD;
      }
    }
  }
  for (int i = 0; i < (N - 1); ++i) {
    ans += dist[i] * multi[i];
    ans %= MOD;
  }
  cout << ans << endl;
  return 0;
}
