#include <bits/stdc++.h>
using namespace std;
const int N=100005,Mod=1e9+7;
int a[N];
inline int qpow(int a,int b){
	int ans=1;
	while (b){
		if (b&1) ans=1ll*ans*a%Mod;
		a=1ll*a*a%Mod,b>>=1;
	}
	return ans;
}
int f[N],fac[N];
int main (){
	int n;scanf ("%d",&n);
	for (int i=1;i<=n;i++) scanf ("%d",&a[i]);fac[0]=1;
	for (int i=1;i<=n;i++) fac[i]=1ll*fac[i-1]*i%Mod;
	int now=0,p=0;
	for (int i=2;i<=n;i++){
		p=(p+qpow(i-1,Mod-2))%Mod;
		now=(now+1ll*p*(a[i]-a[i-1]))%Mod;
	}
	printf ("%d",1ll*now*fac[n-1]%Mod);
	return 0;
}
