#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
int expmod(int a, int b) {
  int rlt = 1;
  while (b) {
    if (b & 1) rlt = 1ll * a * rlt % mod;
    a = 1ll * a * a % mod;
    b >>= 1;
  }
  return rlt;
}
int a[5005], n;
int f[5005][5005 << 1];
int g[5005], rg[5005];
int func(int i, int k) {
  if (i + k > n) return 0;
  return (1ll * g[i + k - 1] * rg[i - 1]) % mod;
}
int ans[5005 << 1];
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) scanf("%d", &a[i]);
  g[0] = 1;
  for (int i = 1; i < n; i++) g[i] = 1ll * g[i - 1] * a[i] % mod;
  for (int i = 0; i < n; i++) rg[i] = expmod(g[i], mod - 2);
  for (int k = 1; k <= 2 * n; k++) {
    for (int i = 1; i <= n; i++) {
      if (i == 1) {
        f[i][k] = 0;
        continue;
      }
      if (k == 1) {
        f[i][k] = 1;
        continue;
      }
      f[i][k] = f[i - 1][k - 1];
      if (k == 1) continue;
      f[i][k] = (f[i][k] + 1ll * (a[i - 1] - 1) * func(i, k - 2)) % mod;
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int k = 1; k <= n * 2; k++) {
      ans[k] = (ans[k] + 1ll * g[i - 1] * f[i][k] % mod) % mod;
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int k = 1; k <= n; k++) {
      ans[k] = (ans[k] + 1ll * g[i - 1] * func(i, k) % mod) % mod;
    }
  }
  int tmp = expmod(2, mod - 2);
  for (int i = 1; i <= n * 2; i++) ans[i] = 1ll * ans[i] * tmp % mod;
  for (int i = 1; i <= n * 2 - 2; i++) printf("%d ", ans[i]);
  puts("");
  return 0;
}
