#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const int INF = 1000 * 1000 * 1000 + 7;
const int MAX = 2000 * 100 + 47;
long long a[MAX];
char curSign = '+';
long long fact[MAX];
void calcFact() {
  fact[0] = 1;
  for (int i = (1); i < (MAX); i++) {
    fact[i] = fact[i - 1] * i;
    fact[i] %= INF;
  }
}
long long binpow(long long a, int k) {
  long long res = 1;
  while (k) {
    if (k & 1) {
      res *= a;
      res %= INF;
    }
    k >>= 1;
    a *= a;
    a %= INF;
  }
  return res;
}
long long c(long long n, long long k) {
  long long res = fact[n];
  res *= binpow(((fact[n - k] * fact[k]) % INF), INF - 2);
  res %= INF;
  return res;
}
long long n;
void simulate() {
  for (int i = (0); i < (n - 1); i++) {
    if (curSign == '+') {
      a[i] = a[i] + a[i + 1];
    } else {
      a[i] = a[i] - a[i + 1];
    }
    a[i] += INF;
    a[i] %= INF;
    curSign = curSign == '+' ? '-' : '+';
  }
  n--;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = (0); i < (n); i++) {
    cin >> a[i];
  }
  if (n == 1) {
    cout << a[0];
    return 0;
  }
  calcFact();
  if (n & 1) {
    simulate();
  }
  long long val0 = 0, val1 = 0;
  long long nSign = n * (n - 1) / 2;
  if (nSign % 2 == 0) {
    curSign = curSign == '+' ? '-' : '+';
  }
  long long n1 = n / 2 - 1;
  for (int i = (0); i < (n); i++) {
    if (i & 1) {
      val1 += (a[i] * c(n1, i / 2)) % INF;
      val1 %= INF;
    } else {
      val0 += (a[i] * c(n1, i / 2)) % INF;
      val0 %= INF;
    }
  }
  if (curSign == '-') {
    val0 = (val0 - val1 + INF) % INF;
  } else {
    val0 = (val0 + val1) % INF;
  }
  cout << val0;
  return 0;
}
