编程题
### 问题描述
小桥是一位热衷于健身的年轻人,他计划去健身房锻炼。在健身房中,有 $n$ 个负重块,每个负重块的重量分别为 $w_1, w_2, \ldots, w_n$。小桥的健身重量为 $a$。现在,小桥想知道有多少种不同的方法可以从这些负重块中选择一个或多个,使得总重量等于小桥的健身重量 $a$。
两种选择方法不同当且仅当:选择的负重块的**下标**集合不同,例如 $\lbrace w_1,w_3,w_5 \rbrace$ 与 $\lbrace w_1,w_5,w_3 \rbrace$ 是相同的,但是 $\lbrace w_1,w_3,w_5 \rbrace$ 与 $\lbrace w_1,w_5,w_4 \rbrace$ 是不同的。
方案数可能很大,请对 $998244353$ 取模。
你能帮助小桥解决这个健身之谜吗?
### 输入格式
第一行输入一个整数 $a$,表示小桥的健身重量。
第二行输入一个整数 $n$,表示负重块的数量。
第三行输入 $n$ 个整数,以空格分隔,表示负重块的重量 $w_1, w_2, \ldots, w_n$。
### 输出格式
输出一个整数,表示有多少种不同的方法可以选择负重块,使得总重量等于小桥的健身重量 $a$,答案对 $998244353$ 取模。
### 样例输入
```
4
5
2 3 1 4 2
```
### 样例输出
```
3
```
### 说明
有以下方式划分:$\lbrace w_1,w_5 \rbrace,\lbrace w_2,w_3 \rbrace,\lbrace w_4 \rbrace$,也就是 $\lbrace 2,2 \rbrace,\lbrace 3,1 \rbrace,\lbrace 4 \rbrace$。
### 评测数据范围
$ 1\le a\le 1000, 1 \le w_i \le 1000, n \le 100$ 。