#include <bits/stdc++.h>
constexpr int mod = 1e9+7, LG = 20, N = 1<<LG;
int a[N], dp_recursive[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;
}
int solve(int mask) {
if (~dp_recursive[mask]) return dp_recursive[mask];
dp_recursive[mask] = a[mask];
for(int msk=(mask-1)&mask; msk; msk=(msk-1)&mask)
dp_recursive[mask] = (dp_recursive[mask] + solve(msk)) % mod;
int down = (fp(2, __builtin_popcount(mask)) + mod - 1) % mod;
return dp_recursive[mask] = dp_recursive[mask] * fp(down, mod -2) % mod;
}
signed main() {
std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr);
memset(dp_recursive, -1, sizeof dp_recursive);
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;
std::cout << solve((1<<n)-1) << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CmNvbnN0ZXhwciBpbnQgbW9kID0gMWU5KzcsIExHID0gMjAsIE4gPSAxPDxMRzsKaW50IGFbTl0sIGRwX3JlY3Vyc2l2ZVtOXTsKCmxvbmcgbG9uZyBmcChsb25nIGxvbmcgYiwgaW50IGUpewogICAgaWYoZSkgcmV0dXJuIGZwKGIqYiUgbW9kLCBlPj4xKSAqIChlJjE/YjoxKSAlIG1vZDsKICAgIHJldHVybiAxOwp9CgppbnQgc29sdmUoaW50IG1hc2spIHsKICAgIGlmICh+ZHBfcmVjdXJzaXZlW21hc2tdKSByZXR1cm4gZHBfcmVjdXJzaXZlW21hc2tdOwogICAgZHBfcmVjdXJzaXZlW21hc2tdID0gYVttYXNrXTsKICAgIGZvcihpbnQgbXNrPShtYXNrLTEpJm1hc2s7IG1zazsgbXNrPShtc2stMSkmbWFzaykKICAgICAgICBkcF9yZWN1cnNpdmVbbWFza10gPSAoZHBfcmVjdXJzaXZlW21hc2tdICsgc29sdmUobXNrKSkgJSBtb2Q7CiAgICBpbnQgZG93biA9IChmcCgyLCBfX2J1aWx0aW5fcG9wY291bnQobWFzaykpICsgbW9kIC0gMSkgJSBtb2Q7CiAgICByZXR1cm4gZHBfcmVjdXJzaXZlW21hc2tdID0gZHBfcmVjdXJzaXZlW21hc2tdICogZnAoZG93biwgbW9kIC0yKSAlIG1vZDsKfQoKc2lnbmVkIG1haW4oKSB7CiAgICBzdGQ6Omlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBzdGQ6OmNpbi50aWUobnVsbHB0cik7CiAgICBtZW1zZXQoZHBfcmVjdXJzaXZlLCAtMSwgc2l6ZW9mIGRwX3JlY3Vyc2l2ZSk7CgogICAgaW50IG47CiAgICBzdGQ6OmNpbiA+PiBuOwogICAgZm9yKGludCBpPTA7IGk8bjsgKytpKQogICAgICAgIHN0ZDo6Y2luID4+IGFbMTw8aV07CgogICAgZm9yKGludCBpPTA7IGk8TEc7ICsraSkKICAgICAgICBmb3IoaW50IG1hc2s9MDsgbWFzazxOOyArK21hc2spCiAgICAgICAgICAgIGlmKG1hc2sgJiAoMTw8aSkpCiAgICAgICAgICAgICAgICBhW21hc2tdID0gKGFbbWFza10gKyBhW21hc2teKDE8PGkpXSkgJSBtb2Q7CiAgICAKICAgIHN0ZDo6Y291dCA8PCBzb2x2ZSgoMTw8biktMSkgPDwgJ1xuJzsKfQo=