#abc169f. [abc169_f]Knapsack for All Subsets

[abc169_f]Knapsack for All Subsets

题目描述

给定 NN 个正整数 A1,A2,ldots,ANA_1, A_2, \\ldots, A_N,以及另一个正整数 SS。对于集合 1,2,ldots,N\\{1, 2, \\ldots , N \\} 的非空子集 TT,定义 f(T)f(T) 如下:

  • f(T)f(T) 是满足 Ax1+Ax2+cdots+Axk=SA_{x_1}+A_{x_2}+\\cdots +A_{x_k} = STT 的不同非空子集 x1,x2,ldots,xk\\{x_1, x_2, \\ldots , x_k \\} 的数量。

找出所有 2N12^N-11,2,ldots,N\\{1, 2, \\ldots , N \\} 的子集 TT 上的 f(T)f(T) 的和。由于和可能非常大,对 998244353998244353 取模后输出。

约束条件

  • 输入的所有值均为整数。
  • 1leqNleq30001 \\leq N \\leq 3000
  • 1leqSleq30001 \\leq S \\leq 3000
  • 1leqAileq30001 \\leq A_i \\leq 3000

输入

从标准输入中按以下格式输入:

NN SS A1A_1 A2A_2 ...... ANA_N

输出

输出 f(T)f(T) 的和对 998244353998244353 取模后的结果。


示例输入1

3 4
2 2 4

示例输出1

6

对于每个 TT,有以下 f(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\\}) = 11,2\\{1, 2\\}
  • f(2,3)=1f(\\{2, 3\\}) = 13\\{3\\}
  • f(1,3)=1f(\\{1, 3\\}) = 13\\{3\\}
  • f(1,2,3)=2f(\\{1, 2, 3\\}) = 21,2,3\\{1, 2\\}, \\{3\\}

示例输入2

5 8
9 9 9 9 9

示例输出2

0

示例输入3

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

示例输出3

3296