#include <bits/stdc++.h>
#define pb push_back

using namespace std;
using ll = long long int;
const int MOD = 1e9 + 7;

ll mpow(ll a, ll n)
{
	ll r = 1;
	while (n)
	{
		if (n&1) r = r*a % MOD;
		a = a*a % MOD;
		n >>= 1;
	}
	return r;
}


int main()
{
	ios::sync_with_stdio(0); cin.tie(0);
	int n; cin >> n;
	ll x[n];
	ll dp[n+5], fac[n+5]; dp[1] = fac[1] = 1;
	for (int i = 2; i <= n; ++i)
	{
		fac[i] = 1LL * i * fac[i-1] % MOD;
		dp[i] = 1LL * (i) * dp[i-1] + fac[i-1]; dp[i] %= MOD;
	}
	ll falling[n+5];
	falling[1] = fac[n-1];
	for (int i = 2; i <= n-1; ++i)
		falling[i] = falling[i-1] * mpow(i, MOD-2) % MOD;

	ll coeff[n+5];
	for (int i = 1; i <= n-1; ++i)
		coeff[i] = dp[i] * falling[i] % MOD;
	vector<ll> dif;
	for (int i = 0; i < n; ++i)
	{
		cin >> x[i];
		if (i) dif.pb(x[i] - x[i-1]);
	}
	ll ans = 0;
	for (int i = 1; i <= n-1; ++i)
		ans += coeff[i] * dif[i-1] % MOD; ans %= MOD;
	cout << ans;
}