#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  vector<int> x(n);
  vector<vector<int>> sub(n, vector<int>(n - 1));
  for (int i = 0; i < n; i++) {
    cin >> x[i];
    for (int j = 0; j < i; j++) {
      sub[i][j] = x[i] - x[j];
    }
  }
  int mod = 1000000007;
  unsigned long long f = 1;
  for (int i = 2; i < n; i++) {
    f *= i;
    f %= mod;
  }
  unsigned long long tmp = f;
  unsigned long long ans = 0;
  tmp /= 2;
  for (int j = 0; j < n - 2; j++) {
    ans += tmp * sub[j + 1][j];
    ans %= mod;
  }
  tmp /= 3;
  for (int j = 0; j < n - 3; j++) {
    ans += tmp * sub[j + 2][j];
    ans %= mod;
  }
  for (int i = 3; i < n - 1; i++) {
    tmp *= (i - 1);
    tmp /= (i + 1);
    for (int j = 0; j < n - i - 1; j++) {
      ans += tmp * sub[j + i][j];
      ans %= mod;
    }
  }
  ans += f * sub[n - 1][n - 2];
  ans %= mod;
  for (int i = 1; i < n - 1; i++) {
    f *= i;
    f /= (i + 1);
    ans += f * sub[n - 1][n - i - 2];
    ans %= mod;
  }
  cout << ans << endl;
  return 0;
}
