#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<set>
#include<unordered_set>
#include<unordered_map>
using namespace std;
typedef long long ll;
#define chmax(a,b) a=max(a,b)
#define chmin(a,b) a=min(a,b)
#define all(x) x.begin(),x.end()
#define rep(i,n) for(int i=0;i<n;i++)
#define mod 1000000007
#define mad(a,b) a=(a+b)%mod
#define N 200010
ll po(ll x,ll y){
    ll res=1;
    for(;y;y>>=1){
	if(y&1)res=res*x%mod;
	x=x*x%mod;
    }
    return res;
}
ll inv(ll x){
    return po(x,mod-2);
}
ll fac[N];
ll n,x[N];
int main(){
    cin.tie(0);
    ios::sync_with_stdio(0);
    fac[0]=1;
    for(ll i=1;i<N;i++)fac[i]=fac[i-1]*i%mod;
    cin>>n;
    rep(i,n)cin>>x[i];
    ll ans=0,rui=0;
    for(ll i=1;i<n;i++){
	ll d=x[i]-x[i-1];
	mad(rui,inv(i)%mod*fac[n-1]%mod);
	mad(ans,d*rui);
    }
    cout<<ans<<endl;
}
