#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <map>
#include <cmath>
#include <queue>
#include <deque>
#include <set>
#include <iomanip>
#include <utility>
#define ll long long
#define ld long double
using namespace std;

ll x[100010], mod=1000000007;

ll modpow(ll a, ll b, ll m){
    ll res=1, p=0, now=a%m;
    b %= (m-1);
    for(int i=0; b>p; ++i){
        if(b&((ll) 1<<i)){
            res=(res*now)%m;
            p |= ((ll) 1<<i);
        }
        now=(now*now)%m;
    }
    return res;
}
ll modinv(ll a, ll m){
    return modpow(a, m-2, m);
}
ll moddiv(ll a, ll b, ll m){
    return (a*modinv(b, m))%m;
}

int main() {
	int N;
	cin >> N;
	for(int i=0; i<N; ++i) cin >> x[i];
	ll frac=1;
	for(int i=1; i<N; ++i) frac=(frac*i)%mod;
	ll ans=0, now=frac;
	for(int i=0; i+1<N; ++i){
		ans=(ans+(now*(x[i+1]-x[i]))%mod)%mod;
		now=(now+moddiv(frac, i+2, mod))%mod;
	}
	cout << ans << endl;
	return 0;
}