N = int(input())
A = [int(a) for a in input().split()]
    
if N > 2000:
  print(0)
  
def cmb(n, r, mod):
    if ( r<0 or r>n ):
        return 0
    r = min(r, n-r)
    return g1[n] * g2[r] * g2[n-r] % mod

mod = 10**9+7 #出力の制限
g1 = [1, 1] # 元テーブル
g2 = [1, 1] #逆元テーブル
inverse = [0, 1] #逆元テーブル計算用テーブル

for i in range( 2, N + 1 ):
    g1.append( ( g1[-1] * i ) % mod )
    inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod )
    g2.append( (g2[-1] * inverse[-1]) % mod )

import math

ans = 0
for i in range(1, N):
    ans += cmb(N-1, N-i, mod)*math.factorial(i-1)*math.factorial(N-i-1)*(A[N-1]-A[i-1])
    ans %= mod
    for j in range(i+1, N):
        ans += cmb(N-1, j-i+1, mod)*math.factorial(N-j+i-2)*math.factorial(j-i-1)*(A[j-1]-A[i-1])
        ans %= mod
        
print(ans)