#include <bits/stdc++.h>
using namespace std;
const long long int MOD = 1000000007;
const long long BIG = 1446803456761533460;
const int Big = 336860180;
stringstream sss;
const long long int maxn = 5010;
long long int n;
long long int A[maxn];
long long int dp[2][maxn * 2][2];
long long int res[maxn * 2];
void MAIN() {
  cin >> n;
  for (long long int i = (0); i < (n - 1); ++i) cin >> A[i];
  dp[0][0][0] = 1;
  long long int ii = 0;
  for (long long int i = (0); i < (n); ++i) {
    dp[ii ^ 1][0][0] = dp[ii ^ 1][1][0] = dp[ii][0][0] * A[i] % MOD;
    dp[ii ^ 1][2][1] = dp[ii][0][0] * (A[i] * (A[i] - 1) / 2 % MOD) % MOD;
    dp[ii ^ 1][2][0] = dp[ii][1][0] * A[i] % MOD;
    for (long long int j = (3); j < (n * 2 - 1); ++j) {
      dp[ii ^ 1][j][1] = dp[ii][j - 2][1] * A[i] % MOD * A[i] % MOD;
      dp[ii ^ 1][j][0] = (dp[ii][j - 1][1] * 2 + dp[ii][j - 1][0]) * A[i] % MOD;
    }
    for (long long int k = (1); k < (n * 2 - 1); ++k)
      res[k] = (res[k] + (dp[ii ^ 1][k][0] + dp[ii ^ 1][k][1])) % MOD;
    ii ^= 1;
  }
  for (long long int k = (1); k < (n * 2 - 1); ++k) {
    cout << res[k] << ' ';
  }
  cout << '\n';
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cout << fixed << setprecision(10);
  sss << R"(
3
2 3
    )";
  MAIN();
  return 0;
}
