#include<bits/stdc++.h>

///for ordered set///
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/trie_policy.hpp>
///for ordered set///

using namespace std;

///for ordered set///
//using namespace __gnu_pbds;
//typedef tree< long long int , null_type, less_equal<long long int>, rb_tree_tag,tree_order_statistics_node_update> ordered_set;
///for ordered set///

///Compiler Optimizer///
//#pragma GCC optimize("Ofast,no-stack-protector")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
//#pragma GCC optimize("unroll-loops")
///Compiler Optimizer///

typedef long long           ll;
typedef unsigned long long  ull;

#define sf                  scanf
#define pf                  printf
#define pb                  push_back
#define ppb                 pop_back
#define MP                  make_pair
#define PF                  first
#define PS                  second
#define si(n)               scanf("%d",&n)
#define sii(x,y)            scanf("%d %d",&x,&y)
#define siii(x,y,z)         scanf("%d %d %d",&x,&y,&z)
#define sl(n)               scanf("%lld",&n)
#define sll(x,y)            scanf("%lld %lld",&x,&y)
#define slll(x,y,z)         scanf("%lld %lld %lld",&x,&y,&z)
#define FOR(i,x,y)          for(int i=x;i<=y;i++)
#define RFOR(i,x,y)         for(int i=x;i>=y;i--)
#define CLR(arr,val)        memset(arr,val,sizeof arr);
#define vout(v,ind)         for(int vind=0;vind<v.size();vind++){ cout<<v[vind]; if(vind<v.size()-1) cout<<' '; else cout<<endl;}
#define arrout(arr,i,x,y)   for(int i=x;i<=y;i++){ cout<<arr[i]; if(i<y) cout<<' '; else cout<<endl;}
#define all(v)              v.begin(),v.end()
#define rall(v)             v.rbegin(),v.rend()
#define TCL(test,t)         for(test=1;test<=t;test++)
#define READ()              freopen("input.txt", "r", stdin)
#define WRITE()             freopen("output.txt", "w", stdout)
#define fastIO()            {ios_base::sync_with_stdio(false); cin.tie(NULL);}
#define MAXN                505
#define MAXP                2005
#define MOD                 1000000007
#define PI                  acos(-1)

#ifdef ELDUIVEL
    #define debug(...) __f(#__VA_ARGS__, __VA_ARGS__)
    template < typename Arg1 >
    void __f(const char* name, Arg1&& arg1){
        cout << name << " = " << arg1 << std::endl;
    }
    template < typename Arg1, typename... Args>
    void __f(const char* names, Arg1&& arg1, Args&&... args){
        const char* comma = strchr(names, ',');
        cout.write(names, comma - names) << " = " << arg1 <<" | ";
        __f(comma+1, args...);
    }
#else
    #define debug(...)
#endif

int ROW[]={+0, +0, -1, +1};
int COL[]={+1, -1, +0, +0};

int X[]={+0,+0,+1,-1,-1,+1,-1,+1};   // Kings Move
int Y[]={-1,+1,+0,+0,+1,+1,-1,-1};  // Kings Move

int KX[]={-2, -2, -1, -1,  1,  1,  2,  2};  // Knights Move
int KY[]={-1,  1, -2,  2, -2,  2, -1,  1}; // Knights Move

ll freq[65];

int main(){
    #ifdef ELDUIVEL
        clock_t tStart = clock();
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif
    int t,cases=0; si(t);
    while(t--){
        int n; si(n);
        CLR(freq,0);
        vector<ll>v(n);
        FOR(i,0,n-1){
            sl(v[i]);
            for(ll j=0;j<60;j++){
                if(v[i]&(1LL<<j))freq[j]++;
            }
        }
        ll ans=0,x,y,z;
        for(int i=0;i<n;i++){
            y=0;
            for(ll j=0;j<60;j++){
                if((v[i]&(1LL<<j))==0) continue;
                x=(1LL<<j)%MOD;
                x*=freq[j]; x%=MOD;
                y+=x;
            }
            y%=MOD;
            z=0;
            for(ll j=0;j<60;j++){
                x=(1LL<<j)%MOD;
                if(v[i]&(1LL<<j)) x*=(ll)n;
                else x*=freq[j];
                x%=MOD;
                z+=x;
            }
            z%=MOD;
            ans+=(y*z)%MOD;
            ans%=MOD;
        }
        cout<<ans<<endl;
    }
    #ifdef ELDUIVEL
        fprintf(stderr, "\n>> Runtime: %.10fs\n", (double) (clock() - tStart) / CLOCKS_PER_SEC);
    #endif
    return 0;
}