#include <bits/stdc++.h>
using namespace std;
int main() {
  int N;
  cin >> N;
  vector<long long> A(N - 1, 0), B(N - 1, 0), C(N, 0);
  long long a = 1, z = 1e9 + 7;
  for (int i = 1; i < N; i++) {
    a *= i, a %= z, A[i - 1] = a;
  }
  a = 1;
  for (int i = N - 1; i > 0; i--) {
    a *= i, a %= z, B[(N - 1) - i] = a;
  }
  for (int i = 0; i < N; i++) {
    cin >> a;
    C[i] = a;
  }
  long long ans = 0;
  for (int i = 0; i < N - 1; i++) {
    if (N < 4) {
      if (i == 0)
        ans += (C[N - 1] - C[i]) * B[N - 3 - i], ans %= z;
      else if (i == N - 2)
        ans += (C[N - 1] - C[i]) * A[i - 1], ans %= z;
    } else {
      if (i == 0 || i == 1)
        ans += (C[N - 1] - C[i]) * B[N - 3 - i], ans %= z;
      else if (i == N - 3 || i == N - 2)
        ans += (C[N - 1] - C[i]) * A[i - 1], ans %= z;
      else
        ans += (C[N - 1] - C[i]) * ((A[i - 1] * B[N - 2 - i]) % z), ans %= z;
    }
  }
  cout << ans << endl;
}
