#ABC169F. Knapsack for All Subsets

Knapsack for All Subsets

题目描述

Given are a sequence of NN positive integers A1A_1, A2A_2, \ldots, ANA_N and another positive integer SS.
For a non-empty subset TT of the set {1,2,,N}\{1, 2, \ldots , N \}, let us define f(T)f(T) as follows:

  • f(T)f(T) is the number of different non-empty subsets {x1,x2,,xk}\{x_1, x_2, \ldots , x_k \} of TT such that Ax1+Ax2++Axk=SA_{x_1}+A_{x_2}+\cdots +A_{x_k} = S.

Find the sum of f(T)f(T) over all 2N12^N-1 subsets TT of {1,2,,N}\{1, 2, \ldots , N \}. Since the sum can be enormous, print it mod 998244353998244353.

给出一个由 NN 个正整数 A1A_1 , A2A_2 , \ldots , ANA_N 和另一个正整数 SS 组成的序列。
对于集合 {1,2,,N}\{1, 2, \ldots , N \} 的非空子集 TT ,我们可以这样定义 f(T)f(T)

  • f(T)f(T)TT 的不同非空子集 {x1,x2,,xk}\{x_1, x_2, \ldots , x_k \}Ax1+Ax2++Axk=SA_{x_1}+A_{x_2}+\cdots +A_{x_k} = S 的个数。
  • {1,2,,N}\{1, 2, \ldots , N \} 的所有 2N12^N-1 子集 TTf(T)f(T) 的和。由于和可能很大,请打印出它的模数 998244353998244353

输入格式

输入内容按以下格式标准输入:

NN SS
A1A_1 A2A_2 ...... ANA_N

输出格式

打印 f(T)f(T) mod 998244353998244353 的和。

样例 #1

样例输入 #1

3 4
2 2 4

样例输出 #1

6

样例 #2

样例输入 #2

5 8
9 9 9 9 9

样例输出 #2

0

样例 #3

样例输入 #3

10 10
3 1 4 1 5 9 2 6 5 3

样例输出 #3

3296

说明

数据规模与约定

  • 所有输入值均为整数。
  • 1N30001 \leq N \leq 3000
  • 1S30001 \leq S \leq 3000
  • 1Ai30001 \leq A_i \leq 3000

样例 11 解释

每个 TTf(T)f(T) 值如下所示。这些值的总和为 66

  • f({1})=0f(\{1\}) = 0
  • f({2})=0f(\{2\}) = 0
  • f({3})=1f(\{3\}) = 1 (其中一个子集 {3}\{3\} 满足条件。)
  • f({1,2})=1f(\{1, 2\}) = 1 ( {1,2}\{1, 2\} )
  • f({2,3})=1f(\{2, 3\}) = 1 ( {3}\{3\} )
  • f({1,3})=1f(\{1, 3\}) = 1 ( {3}\{3\} )
  • f({1,2,3})=2f(\{1, 2, 3\}) = 2 ( {1,2},{3}\{1, 2\}, \{3\} )