#include<atcoder/modint>#include<bits/stdc++.h>usingnamespacestd;usingnamespaceatcoder;usingmint=modint998244353;voidsolve(vector<int>&a){intn=a.size();mintans=0;for(intb=0;b<30;b++){vector<vector<mint>>dp(n,vector<mint>(2,0));vector<vector<mint>>cnt(n,vector<mint>(2,0));// cnt[i][j] is the number of subarrays ending at i with xor j.
// dp[i][j] is the sum of length of all subarrays ending at i with
// xor j.
for(inti=0;i<n;i++){intnow=(a[i]>>b)&1;// Take this element alone.
cnt[i][now]=1;dp[i][now]=1;// Merge it with previous element's subarray.
for(intj=0;j<2;j++){if(i){intw=now^j;cnt[i][j]+=cnt[i-1][w];dp[i][j]+=dp[i-1][w]+cnt[i-1][w];}}}for(inti=0;i<n;i++){ans+=(1LL<<b)*dp[i][1];}}cout<<ans.val()<<"\n";}intmain(){ios_base::sync_with_stdio(false);cin.tie(NULL);intn;cin>>n;vector<int>a(n);for(inti=0;i<n;i++){cin>>a[i];}solve(a);}