#include <bits/stdc++.h>
constexpr int mod = 1e9+7, LG = 20, N = 1<<LG;
int a[N], dp[N], c[N];
long long fp(long long b, int e){
if(e) return fp(b*b% mod, e>>1) * (e&1?b:1) % mod;
return 1;
}
signed main() {
std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr);
int n;
std::cin >> n;
for(int i=0; i<n; ++i)
std::cin >> a[1<<i];
for(int i=0; i<LG; ++i)
for(int mask=0; mask<N; ++mask)
if(mask & (1<<i))
a[mask] = (a[mask] + a[mask^(1<<i)]) % mod;
for(int k=1; k<=LG; ++k){
memset(c, 0, sizeof c);
for(int mask = 0; mask < N; ++mask)
if(__builtin_popcount(mask) == k)
c[mask] = dp[mask] = ((a[mask] + dp[mask]) % mod) * fp((fp(2, k)+mod-1)%mod, mod-2) % mod;
for(int bit = 0; bit < LG; ++bit)
for(int mask = 0; mask < N; ++mask)
if(mask & (1<<bit))
c[mask] = (c[mask] + c[mask ^ (1<<bit)]) % mod;
for(int mask = 0; mask < N; ++mask)
if(__builtin_popcount(mask) > k)
dp[mask] = (dp[mask] + c[mask]) % mod;
}
std::cout << dp[(1<<n)-1] << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CmNvbnN0ZXhwciBpbnQgbW9kID0gMWU5KzcsIExHID0gMjAsIE4gPSAxPDxMRzsKaW50IGFbTl0sIGRwW05dLCBjW05dOwoKbG9uZyBsb25nIGZwKGxvbmcgbG9uZyBiLCBpbnQgZSl7CiAgICBpZihlKSByZXR1cm4gZnAoYipiJSBtb2QsIGU+PjEpICogKGUmMT9iOjEpICUgbW9kOwogICAgcmV0dXJuIDE7Cn0KCnNpZ25lZCBtYWluKCkgewogICAgc3RkOjppb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgc3RkOjpjaW4udGllKG51bGxwdHIpOwoKICAgIGludCBuOwogICAgc3RkOjpjaW4gPj4gbjsKICAgIGZvcihpbnQgaT0wOyBpPG47ICsraSkKICAgICAgICBzdGQ6OmNpbiA+PiBhWzE8PGldOwoKICAgIGZvcihpbnQgaT0wOyBpPExHOyArK2kpCiAgICAgICAgZm9yKGludCBtYXNrPTA7IG1hc2s8TjsgKyttYXNrKQogICAgICAgICAgICBpZihtYXNrICYgKDE8PGkpKQogICAgICAgICAgICAgICAgYVttYXNrXSA9IChhW21hc2tdICsgYVttYXNrXigxPDxpKV0pICUgbW9kOwoKICAgIGZvcihpbnQgaz0xOyBrPD1MRzsgKytrKXsKICAgICAgICBtZW1zZXQoYywgMCwgc2l6ZW9mIGMpOwogICAgICAgIGZvcihpbnQgbWFzayA9IDA7IG1hc2sgPCBOOyArK21hc2spCiAgICAgICAgICAgIGlmKF9fYnVpbHRpbl9wb3Bjb3VudChtYXNrKSA9PSBrKQogICAgICAgICAgICAgICAgY1ttYXNrXSA9IGRwW21hc2tdID0gKChhW21hc2tdICsgZHBbbWFza10pICUgbW9kKSAqIGZwKChmcCgyLCBrKSttb2QtMSklbW9kLCBtb2QtMikgJSBtb2Q7CgogICAgICAgIGZvcihpbnQgYml0ID0gMDsgYml0IDwgTEc7ICsrYml0KQogICAgICAgICAgICBmb3IoaW50IG1hc2sgPSAwOyBtYXNrIDwgTjsgKyttYXNrKQogICAgICAgICAgICAgICAgaWYobWFzayAmICgxPDxiaXQpKQogICAgICAgICAgICAgICAgICAgIGNbbWFza10gPSAoY1ttYXNrXSArIGNbbWFzayBeICgxPDxiaXQpXSkgJSBtb2Q7CgogICAgICAgIGZvcihpbnQgbWFzayA9IDA7IG1hc2sgPCBOOyArK21hc2spCiAgICAgICAgICAgIGlmKF9fYnVpbHRpbl9wb3Bjb3VudChtYXNrKSA+IGspCiAgICAgICAgICAgICAgICBkcFttYXNrXSA9IChkcFttYXNrXSArIGNbbWFza10pICUgbW9kOwogICAgfQogICAgCiAgICBzdGQ6OmNvdXQgPDwgZHBbKDE8PG4pLTFdIDw8ICdcbic7Cn0K