#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int mod = 1e9+7;
void fwt_or(vector<ll>& f, int sz) {
int m = f.size();
for(int b = 0; b < sz; b++){
for(int mask = 1; mask < m; mask++){
if(mask & (1<<b)){
f[mask] = (f[mask] + f[mask^(1<<b)]) % mod;
}
}
}
}
void ifwt_or(vector<ll>& f, int sz){
int m = f.size();
for(int b = 0; b < sz; b++){
for(int mask = 1; mask < m; mask++){
if(mask & (1<<b)){
f[mask] = (f[mask] - f[mask^(1<<b)] + mod) % mod;
}
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
// freopen("SumOr.inp","r",stdin);
// freopen("SumOr.out","w",stdout);
int n;
cin >> n;
vector<ll> a(n);
for(int i = 0; i < n; i++){
cin >> a[i];
}
int sz = 0;
while((1<<sz) < n) sz++;
int m = 1<<sz;
vector<ll> dp(m, 0);
for(int i = 0; i < n; i++){
dp[i] = a[i] % mod;
}
fwt_or(dp, sz);
for(int mask = 0; mask < m; mask++){
dp[mask] = dp[mask] * dp[mask] % mod;
}
ifwt_or(dp, sz);
cout << dp[0] << " ";
for(int u = 1; u < n; u++){
dp[u] = (dp[u] + dp[u - 1]) % mod;
cout << dp[u] << " ";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwpjb25zdCBpbnQgbW9kID0gMWU5Kzc7Cgp2b2lkIGZ3dF9vcih2ZWN0b3I8bGw+JiBmLCBpbnQgc3opIHsKICAgIGludCBtID0gZi5zaXplKCk7CiAgICBmb3IoaW50IGIgPSAwOyBiIDwgc3o7IGIrKyl7CiAgICAgICAgZm9yKGludCBtYXNrID0gMTsgbWFzayA8IG07ICBtYXNrKyspewogICAgICAgICAgICBpZihtYXNrICYgKDE8PGIpKXsKICAgICAgICAgICAgICAgIGZbbWFza10gPSAoZlttYXNrXSArIGZbbWFza14oMTw8YildKSAlIG1vZDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdm9pZCBpZnd0X29yKHZlY3RvcjxsbD4mIGYsIGludCBzeil7CiAgICBpbnQgbSA9IGYuc2l6ZSgpOwogICAgZm9yKGludCBiID0gMDsgYiA8IHN6OyBiKyspewogICAgICAgIGZvcihpbnQgbWFzayA9IDE7IG1hc2sgPCBtOyAgbWFzaysrKXsKICAgICAgICAgICAgaWYobWFzayAmICgxPDxiKSl7CiAgICAgICAgICAgICAgICBmW21hc2tdID0gKGZbbWFza10gLSBmW21hc2teKDE8PGIpXSArIG1vZCkgJSBtb2Q7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIC8vIGZyZW9wZW4oIlN1bU9yLmlucCIsInIiLHN0ZGluKTsKICAgIC8vIGZyZW9wZW4oIlN1bU9yLm91dCIsInciLHN0ZG91dCk7CgogICAgaW50IG47CiAgICBjaW4gPj4gbjsKICAgIHZlY3RvcjxsbD4gYShuKTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQoKICAgIGludCBzeiA9IDA7CiAgICB3aGlsZSgoMTw8c3opIDwgbikgc3orKzsKICAgIGludCBtID0gMTw8c3o7CgogICAgdmVjdG9yPGxsPiBkcChtLCAwKTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgIGRwW2ldID0gYVtpXSAlIG1vZDsKICAgIH0KCiAgICBmd3Rfb3IoZHAsIHN6KTsKCiAgICBmb3IoaW50IG1hc2sgPSAwOyBtYXNrIDwgbTsgIG1hc2srKyl7CiAgICAgICAgZHBbbWFza10gPSBkcFttYXNrXSAqIGRwW21hc2tdICUgbW9kOwogICAgfQoKICAgIGlmd3Rfb3IoZHAsIHN6KTsKCWNvdXQgPDwgZHBbMF0gPDwgIiAiOwogICAgZm9yKGludCB1ID0gMTsgdSA8IG47IHUrKyl7CiAgICAJZHBbdV0gPSAoZHBbdV0gKyBkcFt1IC0gMV0pICUgbW9kOwogICAgICAgIGNvdXQgPDwgZHBbdV0gPDwgIiAiOwogICAgfQogICAgcmV0dXJuIDA7Cn0K