import sys 

read = sys.stdin.buffer.read

readline = sys.stdin.buffer.readline

readlines = sys.stdin.buffer.readlines

mod = 998244353

N,S = list(map(int,readline().split()))

A = list(map(int,readline().split()))

dp = [[0 for _ in range(S+1)] for _ in range(N+1)]

dp[0][0] = 1

for i in range(N):

  for j in range(S+1):

    dp[i+1][j] += 2*dp[i][j]

    dp[i+1][j] %= mod

    if j + A[i] <=S:

      dp[i+1][j+A[i]] += dp[i][j]

      dp[i+1][j+A[i]] %= mod

print((dp[N][S]%mod))
# -*- coding: utf-8 -*-

import sys 

import numpy as np

read = sys.stdin.buffer.read

readline = sys.stdin.buffer.readline

readlines = sys.stdin.buffer.readlines

MOD = 998244353

N, S = list(map(int, readline().split()))

A = list(map(int,readline().split()))



U = 3010

f = np.zeros(U,np.int64)

f[0] = 1

for a in A:

    ff = 2*f

    ff[a:] += f[:-a]

    ff%=MOD

    f = ff

ans = f[S]

print((ans%MOD))
import sys

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
mod = 998244353
N, S = list(map(int, readline().split()))
A = list(map(int, readline().split()))
dp = [[0 for _ in range(S + 1)] for _ in range(N + 1)]
dp[0][0] = 1
for i in range(N):
    for j in range(S + 1):
        dp[i + 1][j] += 2 * dp[i][j]
        dp[i + 1][j] %= mod
        if j + A[i] <= S:
            dp[i + 1][j + A[i]] += dp[i][j]
            dp[i + 1][j + A[i]] %= mod
print((dp[N][S] % mod))

# -*- coding: utf-8 -*-
import sys
import numpy as np

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
MOD = 998244353
N, S = list(map(int, readline().split()))
A = list(map(int, readline().split()))
U = 3010
f = np.zeros(U, np.int64)
f[0] = 1
for a in A:
    ff = 2 * f
    ff[a:] += f[:-a]
    ff %= MOD
    f = ff
ans = f[S]
print((ans % MOD))

+# -*- coding: utf-8 -*- +import numpy as np -mod = 998244353 +MOD = 998244353 -dp = [[0 for _ in range(S + 1)] for _ in range(N + 1)] -dp[0][0] = 1 -for i in range(N): -    for j in range(S + 1): -        dp[i + 1][j] += 2 * dp[i][j] -        dp[i + 1][j] %= mod -        if j + A[i] <= S: -            dp[i + 1][j + A[i]] += dp[i][j] -            dp[i + 1][j + A[i]] %= mod -print((dp[N][S] % mod)) +U = 3010 +f = np.zeros(U, np.int64) +f[0] = 1 +for a in A: +    ff = 2 * f +    ff[a:] += f[:-a] +    ff %= MOD +    f = ff +ans = f[S] +print((ans % MOD))