#include <bits/stdc++.h>
using namespace std;
const int N = 5e3 + 10;
const int mod = 1e9 + 7;
int a[N], f[N][N << 1];
int c[N], inv[N];
int ans[N << 1];
int n;
int ksm(int a, int b) {
  int ret = 1;
  while (b) {
    if (b & 1) ret = 1ll * ret * a % mod;
    b >>= 1;
    a = 1ll * a * a % mod;
  }
  return ret;
}
int calc(int x, int y) {
  return 1ll * c[x + y - 1] * inv[x] % mod * (a[x] - 1) % mod;
}
int main() {
  scanf("%d", &n);
  for (int i(1); i <= (n - 1); ++i) scanf("%d", a + i);
  c[0] = inv[0] = 1;
  for (int i(1); i <= (n); ++i) c[i] = 1ll * c[i - 1] * a[i] % mod;
  for (int i(1); i <= (n); ++i) inv[i] = ksm(c[i], mod - 2);
  for (int i(2); i <= (n); ++i) {
    f[i][1] = 1;
    for (int j(2); j <= (((n - 1) << 1)); ++j) {
      f[i][j] = (f[i - 1][j - 1] + calc(i - 1, j - 1)) % mod;
    }
  }
  for (int i = 1; i <= n; i++)
    for (int d = 1; d <= ((n - 1) << 1); d++)
      ans[d] = (ans[d] + 1ll * c[i - 1] * f[i][d]) % mod;
  for (int i(1); i <= (n - 1); ++i) {
    for (int j = i + 1; j <= n; j++) ans[i] = (ans[i] + c[j - 1]) % mod;
  }
  int inv2 = 1ll * ksm(2, mod - 2);
  for (int i(1); i <= (((n - 1) << 1)); ++i) ans[i] = 1ll * ans[i] * inv2 % mod;
  for (int i(1); i <= (((n - 1) << 1)); ++i) printf("%d\n", ans[i]);
  return 0;
}
