#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ULL;
const int nMax=1e5, MOD=1e9+7;
ULL inv[nMax], Fact[nMax], invF[nMax];
ULL pw(ULL a, ULL n){ ULL b=1; while(n){ if(n&1){ b=(b*a)%MOD; } a=(a*a)%MOD; n>>=1; } return b; }
int main(){
inv[1]=Fact[0]=Fact[1]=invF[0]=invF[1]=1;
for(int i=2; i<nMax; i++){ 
  inv[i]=((MOD-MOD/i)*inv[MOD%i])%MOD;
  Fact[i]=(Fact[i-1]*i)%MOD; invF[i]=(invF[i-1]*inv[i])%MOD;
}
ULL N, ans=0; cin >> N; ULL x[N], p[N-1];
for(int i=0; i<N; i++){ cin >> x[i]; }
p[0]=Fact[N-1];
for(int i=1; i<N-1; i++){ p[i]=(p[i-1]+(Fact[N-1]*pw(i+1, 1e9+5))%MOD)%MOD; }
for(int i=0; i<N-1; i++){ ans=(ans+((x[i+1]-x[i])*p[i])%MOD)%MOD; }
cout << ans << "\n";
}