#include using namespace std; namespace bread { struct mint { inline static int64_t mod = 998244353; mint() : v(0) {} mint(int64_t val) {v = val % mod; if(v < 0) v += mod;} mint& operator+=(const mint& r) {v += r.v; if(v >= mod) v -= mod; return *this;} mint& operator-=(const mint& r) {v -= r.v; if(v < 0) v += mod; return *this;} mint& operator*=(const mint& r) {v = v * r.v % mod; return *this;} mint& operator/=(const mint& r) {return *this *= r.inv();} mint operator-() const {return mint() - *this;} mint pow(int64_t n) const {assert(0 <= n); mint x = v, r = 1; while(n) {if(n & 1) r *= x; x *= x; n /= 2;} return r;} mint inv() const {assert(v); return pow(mod - 2);} friend mint operator+(const mint& l, const mint& r) {return mint(l) += r;} friend mint operator-(const mint& l, const mint& r) {return mint(l) -= r;} friend mint operator*(const mint& l, const mint& r) {return mint(l) *= r;} friend mint operator/(const mint& l, const mint& r) {return mint(l) /= r;} friend bool operator==(const mint& l, const mint& r) {return l.v == r.v;} friend bool operator!=(const mint& l, const mint& r) {return l.v != r.v;} friend bool operator<(const mint& l, const mint& r) {return l.v < r.v;} friend istream& operator>>(istream& is, mint& x) {int64_t v; is >> v; x = mint(v); return is;} friend ostream& operator<<(ostream& os, const mint& x) {return os << x.v;} private: int64_t v; }; } using namespace bread; #define int long long #define rep(i, n) for(int i = 0; i < (int)(n); ++i) int solve() { int N; cin >> N; vector A(N); rep(i, N) cin >> A[i]; mint ans = 0; rep(i, N) { mint res = 0; for(int j = 19; j >= 0; --j) { int ij = (i >> j & 1), Nj = (N >> j & 1); if(Nj == 1) { res += (1 << j) * ((1 << j) - 1) / 2; res += (ij << (j * 2)); res += ((ij ^ 1) << j) * (N & ((1 << j) - 1)); } else if(ij == 1) res += (N & ((1 << j) - 1)) * (ij << j); } ans += res * A[i]; } cout << ans << "\n"; return 0; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int Testcases = 1; //cin >> Testcases; while(Testcases--) if(solve()) return 1; return 0; }