#include <bits/stdc++.h>
using namespace std;
int n;
long long MOD = 1000000007;
long long pas[200100];
long long bae[200100];
long long arr[200100];
long long power(long long a, long long n) {
  if (n == 0) return 1;
  long long t = power(a, n / 2);
  if (n % 2) return ((((t * t) % MOD) * a) % MOD);
  return (((t * t) % MOD));
}
int main() {
  int i, j, m;
  scanf("%d", &n);
  for (i = 0; i < n; i++) scanf("%I64d", &arr[i]);
  n--;
  m = n / 2;
  if (n % 4 == 2) m--;
  pas[0] = 1;
  for (i = 1; i <= m; i++) {
    pas[i] = (((pas[i - 1] * (m - i + 1)) % MOD) * power(i, MOD - 2)) % MOD;
  }
  if (n % 4 == 0) {
    for (i = 0; i <= n; i++) {
      if (i % 2 == 1)
        bae[i] = 0;
      else
        bae[i] = pas[i / 2];
    }
  } else if (n % 4 == 1) {
    for (i = 0; i <= n; i++) {
      bae[i] = pas[i / 2];
    }
  } else if (n % 4 == 2) {
    for (i = 0; i <= n; i++) {
      if (i <= n / 2) {
        if (i & 1)
          bae[i] = (pas[i / 2] * 2) % MOD;
        else
          bae[i] = (((pas[i / 2] * (m - i / 2 - i / 2 + 1)) % MOD) *
                    power(m - i / 2 + 1, MOD - 2)) %
                   MOD;
      } else
        bae[i] = bae[n - i];
      if (i >= n / 2 && ((i - n / 2) % 2 == 1)) bae[i] = -bae[i];
    }
  } else {
    int s = 1;
    for (i = 0; i <= n; i++) {
      bae[i] = pas[i / 2] * s;
      s = -s;
    }
  }
  long long res = 0;
  for (i = 0; i <= n; i++) {
    res += (arr[i] * bae[i]) % MOD;
    res %= MOD;
  }
  printf("%I64d\n", ((res + MOD) % MOD));
  return 0;
}
