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