#include <bits/stdc++.h>
using namespace std;
int n;
long long a[5000];
long long nodecount[5000];
long long mod = 1000000007;
long long ans[10000];
long long* fp;
long long* fc;
long long* nfp;
long long* nfc;
static long long solveCongruence(long long a, long long b, long long mod) {
  if (a == 1) {
    return b;
  }
  long long b1 = -b % a;
  if (b1 != 0) {
    b1 += a;
  }
  long long y = solveCongruence(mod % a, b1, a);
  return (mod * y + b) / a % mod;
}
int main() {
  cin >> n;
  for (int i = 0; i < n - 1; i++) cin >> a[i];
  a[n - 1] = 0;
  nodecount[0] = 1;
  for (int i = 0; i < n - 1; i++) nodecount[i + 1] = nodecount[i] * a[i] % mod;
  fp = new long long[n];
  fc = new long long[n];
  nfp = new long long[n];
  nfc = new long long[n];
  ans[1] = 0;
  for (int i = 0; i < n; i++) {
    if (i > 0) {
      ans[1] += nodecount[i];
      ans[1] %= mod;
      fp[i] = 1;
    } else
      fp[i] = 0;
    if (i < n - 1) {
      ans[1] += nodecount[i] * a[i] % mod;
      ans[1] %= mod;
      fc[i] = 1;
    } else
      fc[i] = 0;
  }
  for (int len = 2; len <= 2 * n - 2; len++) {
    ans[len] = 0;
    for (int i = 0; i < n; i++) nfp[i] = nfc[i] = 0;
    for (int i = 0; i < n; i++) {
      if (fc[i] > 0) {
        if (i > 0) {
          ans[len] += fc[i] * a[i] % mod * nodecount[i] % mod;
          ans[len] %= mod;
          nfc[i - 1] += fc[i] * a[i] % mod;
          nfc[i - 1] %= mod;
        }
        ans[len] += fc[i] * (a[i] - 1) % mod * a[i] % mod * nodecount[i] % mod;
        ans[len] %= mod;
        nfp[i + 1] += fc[i] * (a[i] - 1) % mod;
        nfp[i + 1] %= mod;
      }
      if (fp[i] > 0 && i < n - 1) {
        ans[len] += fp[i] * a[i] % mod * nodecount[i] % mod;
        ans[len] %= mod;
        nfp[i + 1] += fp[i];
        nfp[i + 1] %= mod;
      }
    }
    long long* temp = fp;
    fp = nfp;
    nfp = temp;
    temp = fc;
    fc = nfc;
    nfc = temp;
  }
  for (int i = 1; i <= 2 * n - 2; i++) ans[i] = solveCongruence(2, ans[i], mod);
  cout << ans[1];
  for (int i = 2; i <= 2 * n - 2; i++) cout << " " << ans[i];
  cout << endl;
  delete[] fp;
  delete[] fc;
  delete[] nfp;
  delete[] nfc;
  return 0;
}
