#include <bits/stdc++.h>
#define sz(x) ((int)x.size())
#define all(x) (x).begin(), (x).end()
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const int mod=1e9+7;
int n,x[100010],s[100010];
int fac[100010]={1},inv[100010]={1};
int modpow(int a, long long n) {
	int r = 1, b = a;
	while(n > 0) {
		if(n & 1) r = 1ll * r * b % mod;
		b = 1ll * b * b % mod;
		n >>= 1;
	}
	return r;
}
int nCr(int n,int r) {
	if(r<0||n<r) return 0;
	return (ll)fac[n]*inv[r]%mod*inv[n-r]%mod;
}
int main() {
	int i;
	scanf("%d",&n);
	for(i=1;i<=n;i++) {
		scanf("%d",x+i);
		fac[i]=(ll)fac[i-1]*i%mod;
		inv[i]=modpow(fac[i],mod-2);
	}
	ll ans=0;
	for(i=0;i<=n-2;i++) {
		if(i==0) s[i]=fac[n-1];
		else { 
			s[i]=(ll)fac[i]*nCr(n-1,i+1)%mod*fac[n-2-i]%mod;
			s[i]=(s[i]+s[i-1])%mod;
		}
		ans+=(ll)(x[i+2]-x[i+1])%mod*s[i]%mod;
		ans%=mod;
	}
	printf("%lld",ans);
	return 0;
}