#include <bits/stdc++.h>
using namespace std;

#define int long long
#define rep(i,l,r) for(int i=(int)(l);i<(int)(r);i++)
#define all(x) (x).begin(),(x).end()
#define sz(x) ((int)x.size())
template<class T>bool chmax(T &a,T b){if(a<b){a=b;return 1;}return 0;}
template<class T>bool chmin(T &a,T b){if(a>b){a=b;return 1;}return 0;}

/*
*/

using vi = vector<int>;
using vvi = vector<vi>;
using P = pair<int,int>;

const int mod = 1e9+7;

int mpow(int a, int b)
{
  if(b == 0) return 1; 
  return mpow(a*a%mod, b/2)*(b%2?a:1)%mod;
}

signed main() {
  int n;
  cin >> n;

  vi x(n);
  rep(i, 0, n) cin >> x[i];

  vi d(n-1);
  rep(i, 0, n-1) d[i] = x[i+1] - x[i];

  vi fac(n), inv(n);
  fac[0] = fac[1] = inv[0] = inv[1] = 1;
  rep(i, 2, n) fac[i] = fac[i-1]*i%mod, inv[i] = mpow(i, mod-2)%mod;

  int ans = 0, s = 0;
  rep(i, 0, n-1){
    (s += inv[i+1]) %= mod;
    (ans += d[i]*s%mod) %= mod;
  }
  cout << ans*fac[n-1]%mod << endl;

  return 0;
}
