import collections,sys,math,functools,operator,itertools,bisect,heapq,decimal,string,time,random #sys.setrecursionlimit(10**9) #sys.set_int_max_str_digits(0) n = int(input()) # #alist = [] #s = input() #for i in range(n): # alist.append(list(map(int,input().split()))) alist = list(map(int,input().split())) mod = 998244353 if n == 1: exit(print(alist[0])) ans = 0 for i in range(1,n+1): if i == 1: ans += alist[i-1] * pow(2,n-i-1,mod) ans %= mod continue if i == n: ans += alist[i-1] * pow(2,i-2,mod) * (i+1) ans %= mod continue ans += alist[i-1] * pow(2,i-2,mod) * (i+1) * pow(2,n-i-1,mod) ans %= mod print(ans)