#include int main () { int n = 0; long long a[200000] = {}; int res = 0; long long ans = 0LL; long long mod_num = 998244353LL; long long pow2[200001] = {}; res = scanf("%d", &n); for (int i = 0; i < n; i++) { res = scanf("%lld", a+i); } pow2[0] = 1LL; for (int i = 0; i < n; i++) { pow2[i+1] = pow2[i]*2LL; pow2[i+1] %= mod_num; } for (int i = 0; i < n; i++) { long long tmp = a[i]; if (i > 0) { tmp *= (pow2[i]+((long long)i)*pow2[i-1])%mod_num; tmp %= mod_num; } if (i < n-1) { tmp *= (pow2[n-i-1]+((long long)(n-i-1))*pow2[n-i-2])%mod_num; tmp %= mod_num; } ans += tmp; } printf("%lld\n", ans%mod_num); return 0; }