#include <bits/stdc++.h>
using namespace std;
int const MAX = 100 * 100 + 41;
int const MOD = 1000 * 1000 * 1000 + 7;
int n;
int a[MAX];
int inva[MAX];
int d[2][MAX];
int pref[MAX];
int ans[MAX];
int add(int a, int b) { return (a + b) % MOD; }
int mult(int a, int b) { return (int)((long long)a * b % MOD); }
int sub(int a, int b) {
  a -= b;
  while (a < 0) a += MOD;
  return a;
}
int bp(int x, int d) {
  int res = 1;
  while (d) {
    if (d & 1) res = mult(res, x);
    x = mult(x, x);
    d >>= 1;
  }
  return res;
}
int inv(int x) { return bp(x, MOD - 2); }
void init() {
  pref[0] = 1;
  for (int i = 1; i <= n - 1; i++) {
    pref[i] = mult(pref[i - 1], a[i]);
  }
  for (int i = 0; i <= n; i++) {
    inva[i] = inv(sub(a[i], 1));
  }
}
void solvediff() {
  memset(d, 0, sizeof(d));
  for (int i = 1; i <= n - 1; i++) {
    for (int j = i + 1; j <= n; j++) {
      ans[j - i] = add(ans[j - i], pref[j - 1]);
    }
  }
  for (int i = n; i >= 1; i--) {
    memset(d[1], 0, sizeof(d[1]));
    int cur = mult(a[i], a[i] - 1);
    for (int j = i + 2; j <= n; j++) {
      cur = mult(cur, a[j - 1]);
      d[1][j - i + 1] = add(d[1][j - i + 1], cur);
    }
    for (int j = 0; j <= n * 2 - 2; j++) {
      if (d[0][j]) {
        int v1 = d[0][j];
        int v2 = mult(a[i], a[i] - 1);
        int v3 = mult(a[i + 1], inva[i + 1]);
        int v = mult(v1, mult(v2, v3));
        d[1][j + 2] = add(d[1][j + 2], v);
      }
    }
    for (int j = 0; j <= n * 2 - 2; j++) {
      ans[j] = add(ans[j], mult(pref[i - 1], d[1][j]));
    }
    memcpy(d[0], d[1], sizeof(d[0]));
  }
}
void solvesame() {
  int ip2 = inv(2);
  for (int i = 1; i <= n - 1; i++) {
    int cur = mult(a[i], a[i] - 1);
    cur = mult(cur, pref[i - 1]);
    for (int j = i + 1; j <= n; j++) {
      int h = j - i + j - i;
      ans[h] = add(ans[h], mult(cur, ip2));
      cur = mult(cur, a[j]);
      cur = mult(cur, a[j]);
    }
  }
}
void solve() {
  init();
  solvediff();
  solvesame();
  for (int i = 1; i <= n * 2 - 2; i++) {
    printf("%d ", ans[i]);
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n - 1; i++) {
    scanf("%d", &a[i]);
  }
  solve();
  return 0;
}
