#include <bits/stdc++.h>

using namespace std;

#define int int64_t
const int maxn = 1 << 17, mod = 1e9 + 7;
int cnt[maxn], pows[maxn];
int n;

int calc(int k)
{
    return pows[n - k] * (pows[k] - 1) % mod;
}

int get(int x, int y, int z)
{
    int sum = 0;
    sum += calc(cnt[x]) + calc(cnt[y]) + calc(cnt[z]);
    sum -= calc(cnt[x | y]) + calc(cnt[y | z]) + calc(cnt[x | z]);
    sum += calc(cnt[x | y | z]);
    sum = (sum + mod) % mod;
    return x * y * z % mod * sum;
}

main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    pows[0] = 1;
    for(int i = 1; i < maxn; i++)
        pows[i] = 2 * pows[i - 1] % mod;
    cin >> n;
    for(int i = 0; i < n; i++)
    {
        int a;
        cin >> a;
        for(int x = 1; x < maxn; x <<= 1)
            for(int y = x; y < maxn; y <<= 1)
                for(int z = y; z < maxn; z <<= 1)
                {
                    if(y == z && y != x)
                        continue;
                    int num = x | y | z;
                    if((a & num) != 0)
                        cnt[num]++;
                }
    }
    int ans = 0;
    for(int x = 1; x < maxn; x <<= 1)
        for(int y = 1; y < maxn; y <<= 1)
            for(int z = 1; z < maxn; z <<= 1)
                ans = (ans + get(x, y, z)) % mod;
    cout << ans << "\n";

}