#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
long long p;
long long a[200005];
long long f[200005];
long long Qpow(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % MOD;
    a = a * a % MOD;
    b >>= 1;
  }
  return ans;
}
long long C(long long x, long long y) {
  return f[y] * Qpow(f[x] * f[y - x] % MOD, MOD - 2) % MOD;
}
int main() {
  int n;
  scanf("%d", &n);
  if (n % 2 == 0) {
    for (int i = 1; i <= n; i++) scanf("%I64d", a + i);
  } else {
    long long temp;
    scanf("%I64d", &temp);
    if (n == 1) {
      printf("%I64d\n", temp % MOD);
      return 0;
    }
    for (int i = 2; i <= n; i++) {
      long long b;
      scanf("%I64d", &b);
      a[i - 1] = ((i % 2 == 0) ? ((temp + b) % MOD) : ((temp - b + MOD) % MOD));
      temp = b;
    }
    n--;
  }
  p = n / 2 - 1;
  long long x = 0, y = 0;
  f[0] = 1;
  for (long long i = 1; i <= p; i++) {
    f[i] = f[i - 1] * i % MOD;
  }
  for (int i = 1; i <= n; i += 2) {
    long long q = C(i / 2, p) % MOD;
    x += (q * (a[i]) % MOD);
    y += (q * (a[i + 1]) % MOD);
    x %= MOD;
    y %= MOD;
  }
  if (p % 2 != 0)
    printf("%I64d\n", (x - y + MOD) % MOD);
  else
    printf("%I64d\n", (x + y) % MOD);
  return 0;
}
