#include <bits/stdc++.h>
using namespace std;
const long long mo = 1e9 + 7;
const int maxi = 1e6 + 10;
long long a[maxi];
int n;
int x[maxi];
long long f[maxi], fi[maxi];
long long ans;
long long step(int x, int y) {
  if (!y) return 1;
  long long p = step(x, y / 2);
  if (y & 1) return p * p % mo * x % mo;
  return p * p % mo;
}
long long bin(int x, int y) {
  if (y > x) return 0;
  return f[x] * fi[y] % mo * fi[x - y] % mo;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) scanf("%d", &x[i]);
  f[0] = 1;
  for (int i = 1; i <= n; i++) f[i] = f[i - 1] * i % mo;
  for (int i = 0; i <= n; i++) fi[i] = step(f[i], mo - 2);
  for (int i = 1; i <= n - 1; i++) {
    long long sum = 0;
    for (int j = i - 1; j < n - 1; j++) {
      ans += (x[n] - x[i]) * bin(n - i - 1, j - i + 1) % mo *
             step(bin(n - 1, j), mo - 2) % mo * step(n - j - 1, mo - 2) % mo;
      ans %= mo;
    }
  }
  ans *= f[n - 1];
  ans %= mo;
  cout << ans << endl;
  return 0;
}
