#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1000000007;

void extended_euclid(ll x,ll y,ll *c,ll *a,ll *b){
  ll a0,a1,a2,b0,b1,b2,r0,r1,r2,q;r0=x;r1=y;a0=1;a1=0;b0=0;b1=1;
  while(r1>0){q=r0/r1;r2=r0%r1;a2=a0-q*a1;b2=b0-q*b1;r0=r1;r1=r2;a0=a1;a1=a2;b0=b1;b1=b2;}
  *c=r0;*a=a0;*b=b0;
}

ll get_inv(ll n, ll p){
  ll a,b,c;
  extended_euclid(n,p,&c,&a,&b);
  if(a<p) a+=p;
  return a%p;
}

int main() {
  ll n;
  cin >> n;
  ll a[n];
  for(int i=0; i<n; i++) cin >> a[i];
  ll ans=0,d=1,sum=0;
  for(int i=1; i<n; i++) {
    d*=i;
    d%=mod;
  }
  for(int i=1; i<n; i++) {
    sum+=d*get_inv(i,mod);
    sum%=mod;
    ans+=sum*(a[i]-a[i-1]);
    ans%=mod;
  }
  cout << ans << endl;
  return 0;
}
