local mod = 998244353
local mfl = math.floor
local function bmul(x, y)
  local x0, y0 = x % 31596, y % 31596
  local x1, y1 = mfl(x / 31596), mfl(y / 31596)
  return (x1 * y1 * 62863 + (x1 * y0 + x0 * y1) * 31596 + x0 * y0) % mod
end
local function badd(x, y)
  return (x + y) % mod
end

local pow2 = {1}
for i = 2, 100000 do
  pow2[i] = (2 * pow2[i - 1]) % mod
end

local n, s = io.read("*n", "*n")
local a = {}
for i = 1, n do
  a[i] = io.read("*n")
end
local dp = {}
for i = 1, s + 1 do
  dp[i] = 0
end
dp[1] = 1
for i = 1, n do
  local v = a[i]
  for j = s + 1, s + 2 - v, -1 do
    dp[j] = bmul(dp[j], 2)
  end
  for j = s + 1 - v, 1, -1 do
    dp[j + v] = badd(dp[j + v], dp[j])
    dp[j] = bmul(dp[j], 2)
  end
end
print(dp[s + 1])
