#include <bits/stdc++.h>
#define int long long
#define F first
#define S second
#define P pair
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define V vector
#define RE return
#define ALL(a) a.begin(),a.end()
#define MP make_pair
#define PB push_back
#define PF push_front
#define FILL(a,b) memset(a,b,sizeof(a))
using namespace std;
int f1[100005],f2[100005],a1[100005],a2[100005];
int n,a[100005],mod=1e9+7;
signed main(){
ios::sync_with_stdio(0);
   cin.tie(0);
int ans=0;
cin>>n;
FOR(i,1,n){
cin>>a[i];
}
FOR(i,1,n){
a1[i]=(a1[i-1]+a[i])%mod;
}
for(int i=n-1;i>=1;i--){
a2[i]=(a2[i+1]+a[i])%mod;
}
f1[0]=1;
FOR(i,1,n-1){
f1[i]=f1[i-1]*i%mod;
}
f2[n-1]=n-1;
for(int i=n-2;i>=1;i--){
f2[i]=f2[i+1]*i%mod;
}
f2[n]=f2[n+1]=1;
for(int i=1;i<=n;i++){
    ans=ans+f2[i+2]*f1[i-1]%mod*(a2[i+1]-a1[n-i-1]);
    ans=ans%mod;
}
FOR(i,1,n-1){
ans=ans+f1[n-i-1]*f2[n-i+1]%mod*(a[n]-a[i]);ans=ans%mod;
}
cout<<ans;
return 0;
}
