#include <iostream>
#include <cstdio>
#include <ctime>
using namespace std;
#define arsize 100000
int arr[arsize];
FILE *in;
FILE *out;
char buf[256];
long long sum;
void sumBitArrPairs(int arr[], int n)
{
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			int temp = arr[i] ^ arr[j];
			while (temp != 0) {
				if (temp & 1)
					sum++;
				temp >>= 1;
			}
		}
	}
	cout << sum << endl;
}

void sumBitArrPairs2(int arr[], int n)
{
	for (int i = 0; i <32; i++) {
		long long int count = 0;
		for (int j = 0; j < n; j++) {
			if (arr[j] & (1 << i))
				count++;
		}
		sum += (count * (n - count) * 2) % 1000000007;
	}
	//cout << sum << endl;
	fprintf(out, "%lld\n", sum);
}
int main()
{

    for (int i = 0; i < arsize; i++)
        arr[i] = i+1;

	int n = sizeof(arr) / sizeof(int);
    sprintf(buf, "%d.in", 6);
    in = fopen(buf, "w");
    fprintf(in, "%d\n", arsize);
    for (int i = 0; i < arsize; i++) {
        fprintf(in, "%d ", arr[i]);
    }


    sprintf(buf, "%d.out", 6);
    out = fopen(buf, "w");

    //time_t s, e;
    //s = clock();
	//sumBitArrPairs(arr, n);
    //e = clock();
    //cout << (double)(e-s)/CLOCKS_PER_SEC << endl;
    //s=clock();
	sumBitArrPairs2(arr, n);
    //e=clock();
	//cout << (double)(e-s)/CLOCKS_PER_SEC << endl;
    fclose(in);
    fclose(out);
	return 0;
}
