#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
struct ModInt {
  uint_fast64_t a;
  ModInt() : a(0) {}
  ModInt(uint_fast64_t x) : a(x % MOD) {}
  ModInt operator+=(const ModInt p) {
    a += p.a;
    if (a >= MOD) a -= MOD;
    return *this;
  }
  ModInt operator-=(const ModInt p) {
    a -= p.a;
    if (a < 0) a += MOD;
    return *this;
  }
  ModInt operator*=(const ModInt p) {
    a = (a * p.a) % MOD;
    return *this;
  }
  ModInt operator+(const ModInt p) {
    ModInt x(a);
    return x += p;
  }
  ModInt operator-(const ModInt p) {
    ModInt x(a);
    return x -= p;
  }
  ModInt operator*(const ModInt p) {
    ModInt x(a);
    return x *= p;
  }
  ModInt operator=(long long int p) {
    a = p;
    return *this;
  }
  bool operator==(const ModInt p) { return a == p.a; }
  bool operator!=(const ModInt p) { return a != p.a; }
  ModInt pow(uint_fast64_t N) {
    ModInt ans(1), p(a);
    while (N > 0) {
      if (((N >> 0) & 1)) {
        ans *= p;
      }
      p *= p;
      N >>= 1;
    }
    return ans;
  }
  ModInt inverse() { return pow(MOD - 2); }
};
signed main(void) {
  int N;
  cin >> N;
  ModInt t(1);
  ModInt i(1);
  for (; i.a <= N - 1; i.a++) {
    t *= i;
  }
  ModInt S[2100], x[2100];
  for (i.a = 1; i.a <= N - 1; i.a++) {
    S[i.a] += S[i.a - 1] + t * i.inverse();
  }
  for (int a = 1; a <= N; a++) cin >> x[a].a;
  ModInt ans(0);
  for (int a = 1; a <= N - 1; a++) {
    ans += S[a] * (x[a + 1] - x[a]);
  }
  cout << ans.a << endl;
}
