#include <bits/stdc++.h>
using namespace std;
int N;
long long int x[100005];
long long int MOD = 1000000007;
long long int K[200005];
long long int POW(long long int a, long long int k) {
  if (k == 0) {
    return 1;
  }
  if (k % 2 == 1) {
    return (a * POW(a, k - 1)) % MOD;
  }
  long long int ret = POW(a, k / 2);
  return (ret * ret) % MOD;
}
long long int INV(long long int a) { return POW(a, MOD - 2); }
long long int P(int i, int j) {
  long long int ret = K[N - 1];
  ret *= INV(j - i + 1);
  ret %= MOD;
  ret *= INV(j - i);
  return ret % MOD;
}
long long int Q(int i) {
  long long int ret = K[N - 1];
  ret *= INV(N - i);
  return ret %= MOD;
}
int main(void) {
  cin >> N;
  for (int i = 1; i <= N; i++) {
    cin >> x[i];
  }
  K[0] = 1;
  for (int i = 1; i <= 200000; i++) {
    K[i] = K[i - 1] * i;
    K[i] %= MOD;
  }
  long long int ans = 0;
  for (int i = 1; i <= N - 2; i++) {
    for (int j = i + 1; j <= N - 1; j++) {
      ans += ((x[j] - x[i]) * P(i, j)) % MOD;
      ans %= MOD;
    }
  }
  for (int i = 1; i <= N - 1; i++) {
    ans += ((x[N] - x[i]) * Q(i)) % MOD;
    ans %= MOD;
  }
  cout << ans << endl;
  return 0;
}
