#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin>>n;
    long long int ar=0;

    
    
    int temp[64];
    for(int i=0;i<64;i++){
        temp[i]=0;
    }
    for(int i=0;i<n;i++){
        cin>>ar;
        int j=0;
        while(ar>0){
            temp[j]+=ar%2;
            ar/=2;
            j++;
        }
    }
    long long int sum=0,tempsum=0,temp2;

    for(int i=0;i<63;i++){
        int k1=temp[i],k2=n-temp[i];
        // cout <<k1 << " " << k2 << endl;
        tempsum=k1;tempsum*=k2;
        if(tempsum>1000000007)    tempsum=tempsum%1000000007;
        temp2=(pow(2,i));
        // cout << temp2 <<endl;
        // cout << tempsum<< endl;
        if(temp2>1000000007)    temp2=temp2%1000000007;
        tempsum*=temp2;
        sum+=tempsum;
        if(sum>1000000007)    sum=sum%1000000007;

    }
    cout << sum << endl;
    return 0;

}

#include <bits/stdc++.h>
using namespace std;
#include <math.h>
#include <iomanip>
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }

const int mod=1000000007;
const int INF=1001001001;

vector<pair<int64_t,int64_t>>prime_factorize(int64_t x){
  vector<pair<int64_t,int64_t>>p;
  for(int64_t i=2;i*i<=x;i++){
    int cnt=0;
    if(x%i==0){
    while(x%i==0){cnt++;x/=i;}
    p.push_back(make_pair(i,cnt));
    }
  }
  if(x!=1){p.push_back(make_pair(x,1));}
  return p; 
}

int main() {
  string s;
  cin>>s;
  int n=s.size();
  stack<char>k;
  for(int i=0;i<n;i++){
    if(k.empty()){k.push(s[i]);}
    else if(s[i]=='T'&&k.top()=='S'){k.pop();}
    else{k.push(s[i]);}
  }
  cout<<k.size()<<endl;
  return 0;  
}