output_description: Print the answer.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      x_1 x_2 \ldots x_N
attempt: N = int(input())
  X = list(map(int, input().split()))
  
  # 一番移動量が大きくなるのはN-1番目->N-2番目(N-1番目)と選ばれるの
  # 一番移動量が小さくなるのは1番目->2番目（一番目）と選ばれるの
  # つまり右端の数字で移動量が決まる．例えば一番目のスライムの行き先は(N-1)通りあり(2~N)これらは等しい確率？
  # ではなくない？ だってどう考えたって，右に2がある確率が高いし,N番目のがある確率は限りなく低くない？
  # ２番めより先に１番目が呼ばれれば右に２があるのか．つまり1/2か？右に３があるのは2->1->3の順番かつまり1/4か?
  # つまり1/2 + 1/4 + 1/8...1/2^(N-1?)か右にNがある確率は(1-(1/2+1/4+...1/2^(N-1?)))かな？
  # N=2の時は別に分けないといけないのか？これ．もうよくわからん．めんどくさいのでこれで終わり
  from collections import deque
  
  X = deque(X)
  kitai = 0
  for i in range(N - 1):  # N-1回の繰り返し
      if len(X) == 2:
          kitai += X[-1] - X[-2]
          break
      x = X.popleft()
      # xの行き先とそこに行ける確率で移動距離の期待値を計算する.
      left_num = len(X)
      left_dis = [X[k] - x for k in range(left_num)]
      kakuritsu = [1 / (2**l) for l in range(1, left_num)]
      last_kakuritsu = 1 - sum(kakuritsu)
      kakuritsu.append(last_kakuritsu)
      x_kitai = [dis * kaku for (dis, kaku) in zip(left_dis, kakuritsu)]
      kitai += sum(x_kitai)
  import math
  
  print(int(kitai * math.factorial(N - 1)) % (10**9 + 7))
  
problem_description: Statement
  
  There are N slimes standing on a number line. The i-th slime from the left is
  at position x_i.
  
  It is guaruanteed that 1 \leq x_1 < x_2 < \ldots < x_N \leq 10^{9}.
  
  Niwango will perform N-1 operations. The i-th operation consists of the
  following procedures:
  
    * Choose an integer k between 1 and N-i (inclusive) with equal probability.
    * Move the k-th slime from the left, to the position of the neighboring slime to the right.
    * Fuse the two slimes at the same position into one slime.
  
  Find the total distance traveled by the slimes multiplied by (N-1)! (we can
  show that this value is an integer), modulo (10^{9}+7). If a slime is born by
  a fuse and that slime moves, we count it as just one slime.
samples: [{"input": "3\n    1 2 3", "output": "5\n    \n\n  * With probability \\frac{1}{2}, the leftmost slime is chosen in the first operation, in which case the total distance traveled is 2.\n  * With probability \\frac{1}{2}, the middle slime is chosen in the first operation, in which case the total distance traveled is 3.\n  * The answer is the expected total distance traveled, 2.5, multiplied by 2!, which is 5.\n\n* * *"}, {"input": "12\n    161735902 211047202 430302156 450968417 628894325 707723857 731963982 822804784 880895728 923078537 971407775 982631932", "output": "750927044\n    \n\n  * Find the expected value multiplied by (N-1)!, modulo (10^9+7)."}]