#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 2e5 + 5;
const int MOD = 1e9 + 7;
void add(int& a, int b) {
a += b;
if (a >= MOD) a -= MOD;
if (a < 0) a += MOD;
}
int n;
int a[N];
int pow2[N];
int sos[1 << 18];
int sign(int mask) {
return (__builtin_parity(mask) ? 1 : -1);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
pow2[0] = 1;
for (int i = 1; i <= n; i++) pow2[i] = 2 * pow2[i - 1] % MOD;
for (int i = 1; i <= n; i++) ++sos[a[i]];
for (int i = 0; i < 18; i++) {
for (int mask = 0; mask < (1 << 18); mask++) {
if (!(mask & (1 << i))) sos[mask] += sos[mask ^ (1 << i)];
}
}
for (int mask = 0; mask < (1 << 18); mask++) {
sos[mask] = sign(mask) * (pow2[sos[mask]] - 1);
}
for (int i = 0; i < 18; i++) {
for (int mask = 0; mask < (1 << 18); mask++) {
if (!(mask & (1 << i))) add(sos[mask], sos[mask ^ (1 << i)]);
}
}
for (int mask = 0; mask < (1 << 18); mask++) {
sos[mask] = sign(mask) * sos[mask];
if (sos[mask] < 0) sos[mask] += MOD;
}
for (int k = 0; k <= n; k++) {
cout << sos[k] << ' ';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAyZTUgKyA1OyAKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7ICAKCnZvaWQgYWRkKGludCYgYSwgaW50IGIpIHsKCWEgKz0gYjsgCglpZiAoYSA+PSBNT0QpIGEgLT0gTU9EOyAgCglpZiAoYSA8IDApIGEgKz0gTU9EOyAgCn0KCmludCBuOyAgCmludCBhW05dOyAKCmludCBwb3cyW05dOyAKaW50IHNvc1sxIDw8IDE4XTsgCgppbnQgc2lnbihpbnQgbWFzaykgewoJcmV0dXJuIChfX2J1aWx0aW5fcGFyaXR5KG1hc2spID8gMSA6IC0xKTsgCn0KCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyAKCWNpbi50aWUobnVsbHB0cik7IAkKCWNpbiA+PiBuOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gYVtpXTsgCgoJcG93MlswXSA9IDE7ICAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgcG93MltpXSA9IDIgKiBwb3cyW2kgLSAxXSAlIE1PRDsgIAoKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgKytzb3NbYVtpXV07ICAKCglmb3IgKGludCBpID0gMDsgaSA8IDE4OyBpKyspIHsKCQlmb3IgKGludCBtYXNrID0gMDsgbWFzayA8ICgxIDw8IDE4KTsgbWFzaysrKSB7CgkJCWlmICghKG1hc2sgJiAoMSA8PCBpKSkpIHNvc1ttYXNrXSArPSBzb3NbbWFzayBeICgxIDw8IGkpXTsgCgkJfQoJfQoKCWZvciAoaW50IG1hc2sgPSAwOyBtYXNrIDwgKDEgPDwgMTgpOyBtYXNrKyspIHsKCQlzb3NbbWFza10gPSBzaWduKG1hc2spICogKHBvdzJbc29zW21hc2tdXSAtIDEpOyAKCX0KCglmb3IgKGludCBpID0gMDsgaSA8IDE4OyBpKyspIHsKCQlmb3IgKGludCBtYXNrID0gMDsgbWFzayA8ICgxIDw8IDE4KTsgbWFzaysrKSB7CgkJCWlmICghKG1hc2sgJiAoMSA8PCBpKSkpIGFkZChzb3NbbWFza10sIHNvc1ttYXNrIF4gKDEgPDwgaSldKTsgCgkJfQoJfQoKCWZvciAoaW50IG1hc2sgPSAwOyBtYXNrIDwgKDEgPDwgMTgpOyBtYXNrKyspIHsKCQlzb3NbbWFza10gPSBzaWduKG1hc2spICogc29zW21hc2tdOyAKCQlpZiAoc29zW21hc2tdIDwgMCkgc29zW21hc2tdICs9IE1PRDsKCX0KCglmb3IgKGludCBrID0gMDsgayA8PSBuOyBrKyspIHsKCQljb3V0IDw8IHNvc1trXSA8PCAnICc7IAoJfQp9