    int N;
    cin >> N;
    vector<long long> A(N);
    for(int i = 0; i < N; ++i){
        cin >> A[i];
    }

    long long res = 0;
    for(int d = 0; d < 60; ++d){
        long long n0 = 0, n1 = 0;
        for(int i = 0; i < N; ++i){
            if((A[i] >> d) & 1) ++n1;   // d 桁目が 1
            else    ++n0;               // d 桁目が 0
        }
        long long tmp = (1ll << d) % mod;   // 2^d
        long long n = n0 * n1 % mod;        // xor 演算を施した要素で d 桁目が 1 である個数
        tmp = tmp * n % mod;                // xor 演算を施した要素の d 桁目の総和
        res = (res + tmp) % mod;
    }
    cout << res << endl;
}