output_description: Print the sum of f(T) modulo 998244353.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N S
      A_1 A_2 ... A_N
attempt: def subsets(nums):
      output = []
      for i in range(1, len(nums)):
          backtrack(0, nums, i, [], output)
  
      return output
  
  
  def backtrack(start, nums, size, curr, output):
      if len(curr) == size:
          output.append(curr[:])
  
      for i in range(start, len(nums)):
          curr.append(nums[i])
          backtrack(i + 1, nums, size, curr, output)
          curr.pop()
  
  
  def count_subsets(num, sum):
      n = len(num)
      dp = [0 for _ in range(sum + 1)]
      dp[0] = 1
  
      # with only one number, we can form a subset only when the required sum is equal to the number
      for s in range(1, sum + 1):
          dp[s] = 1 if num[0] == s else 0
  
      # process all subsets for all sums
      for i in range(1, n):
          for s in range(sum, -1, -1):
              if s >= num[i]:
                  dp[s] += dp[s - num[i]]
  
      return dp[-1]
  
  
  N, S = map(int, input().split())
  sub_sets = list(map(int, input().split()))
  
  result = count_subsets(sub_sets, S)
  
  print(result % 998244353)
  
problem_description: Statement
  
  Given are a sequence of N positive integers A_1, A_2, \ldots, A_N and another
  positive integer S.  
  For a non-empty subset T of the set \\{1, 2, \ldots , N \\}, let us define
  f(T) as follows:  
  
    * f(T) is the number of different non-empty subsets \\{x_1, x_2, \ldots , x_k \\} of T such that A_{x_1}+A_{x_2}+\cdots +A_{x_k} = S.
  
  Find the sum of f(T) over all 2^N-1 subsets T of \\{1, 2, \ldots , N \\}.
  Since the sum can be enormous, print it modulo 998244353.
samples: [{"input": "3 4\n    2 2 4", "output": "6\n    \n\nFor each T, the value of f(T) is shown below. The sum of these values is 6.\n\n  * f(\\\\{1\\\\}) = 0\n  * f(\\\\{2\\\\}) = 0\n  * f(\\\\{3\\\\}) = 1 (One subset \\\\{3\\\\} satisfies the condition.)\n  * f(\\\\{1, 2\\\\}) = 1 (\\\\{1, 2\\\\})\n  * f(\\\\{2, 3\\\\}) = 1 (\\\\{3\\\\})\n  * f(\\\\{1, 3\\\\}) = 1 (\\\\{3\\\\})\n  * f(\\\\{1, 2, 3\\\\}) = 2 (\\\\{1, 2\\\\}, \\\\{3\\\\})\n\n* * *"}, {"input": "5 8\n    9 9 9 9 9", "output": "0\n    \n\n* * *"}, {"input": "10 10\n    3 1 4 1 5 9 2 6 5 3", "output": "3296"}]