#include <bits/stdc++.h>
using namespace std;
template <typename T1, typename T2>
inline void chmin(T1 &a, T2 b) {
  if (a > b) a = b;
}
template <typename T1, typename T2>
inline void chmax(T1 &a, T2 b) {
  if (a < b) a = b;
}
const long long MOD = 1000000007;
long long fact(long long x, long long a, long long b) {
  long long res = 1;
  for (int i = 1; i <= x; i++) {
    if (i == b - a + 1 || i == b - a + 2) continue;
    res *= i;
    res %= MOD;
  }
  return res;
}
long long fact2(long long x) {
  long long res = 1;
  for (int i = 1; i <= x; i++) {
    res *= i;
    res %= MOD;
  }
  return res;
}
int main() {
  int n;
  cin >> n;
  long long x[n];
  long long d[n];
  for (int i = 0; i < (n); i++) {
    cin >> x[i];
    if (i > 0) d[i - 1] = x[i] - x[0];
  }
  long long mp[n][n];
  memset(mp, 0, sizeof(mp));
  mp[0][0] = d[0];
  for (int i = 0; i < n - 1; i++) {
    for (int j = i; j < n - 1; j++) {
      if (i == 0 && j == 0) continue;
      if (i == 0)
        mp[i][j] = d[j];
      else
        mp[i][j] = mp[i][j - 1] + d[j] - d[j - 1];
    }
  }
  long long ans = 0;
  for (int i = 0; i < (n - 1); i++) {
    for (int j = i; j < n - 1; j++) {
      if (j == n - 2) {
        ans += mp[i][j] * fact2(n) / (n - 1 - i);
        ans %= MOD;
        continue;
      }
      ans += (mp[i][j] * fact(n, i, j)) % MOD;
      ans %= MOD;
    }
  }
  cout << ans << endl;
}
