#include <bits/stdc++.h>
using namespace std;
long long a[5005], q[5005], s[5005];
int n;
long long r[10005], v[10005];
int main() {
  scanf("%d", &n);
  for (int i = 0, ThxDem = n - 1; i < ThxDem; ++i) scanf("%lld", a + i);
  s[0] = 1;
  for (int i = 1, ThxDem = n; i < ThxDem; ++i)
    s[i] = s[i - 1] * a[i - 1] % 1000000007;
  q[n - 1] = 1;
  for (int i = n - 2; i >= 0; --i) q[i] = (1 + a[i] * q[i + 1]) % 1000000007;
  for (int i = 0, ThxDem = n; i < ThxDem; ++i) {
    for (int j = 1, ThxDem = 2 * n - 1; j < ThxDem; ++j) {
      r[j] += s[i] * v[j] % 1000000007;
      if (r[j] >= 1000000007) r[j] -= 1000000007;
    }
    long long t = a[i];
    for (int j = i + 1, ThxDem = n; j < ThxDem; ++j) {
      r[j - i] += s[i] * t % 1000000007;
      if (r[j - i] >= 1000000007) r[j - i] -= 1000000007;
      t = (t * a[j]) % 1000000007;
    }
    if (i == n - 1) break;
    for (int i = 2 * n - 2; i > 0; --i) v[i] = v[i - 1];
    v[0] = 0;
    v[1] = 1;
    t = a[i] - 1;
    for (int j = i + 1, ThxDem = n; j < ThxDem; ++j) {
      v[j - i + 1] += t;
      if (v[j - i + 1] >= 1000000007) v[j - i + 1] -= 1000000007;
      t = (t * a[j]) % 1000000007;
    }
  }
  for (int i = 1, ThxDem = 2 * n - 1; i < ThxDem; ++i)
    printf("%lld%c", r[i] * ((1000000007 + 1) / 2) % 1000000007,
           " \n"[i == 2 * n - 2]);
  return 0;
}
