#include using i64 = long long; using u64 = unsigned long long; using u32 = unsigned; using u128 = unsigned __int128; using i128 = __int128; const int MOD = 998244353; int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int N; std::cin >> N; int len = 0; while ((1 << len) < N) len++; // std::cout << len << '\n'; std::vector A(N), cnt1(len), cnt0(len); for (int i = 0; i < N; i++) { std::cin >> A[i]; for (int j = 0; j < len; j++) { if ((i >> j) & 1) cnt1[j]++; else cnt0[j]++; } } // for (int i = 0; i < len; i++) { // std::cout << cnt1[i] << " " << cnt0[i] << '\n'; // } i64 ans = 0; for (int i = 0; i < N; i++) { i64 s = 0; for (int j = 0; j < len; j++) { int prod = cnt1[j]; if ((i >> j) & 1) prod = cnt0[j]; s += (1 << j) * prod; } ans += s * A[i] % MOD; ans %= MOD; } std::cout << ans << '\n'; return 0; }