烹饪
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

“你已经是一个成熟的孩子了,要学会自己烹饪了!”

小 Y 上山拜师学艺,经过 年之长的厨艺练习,已成为当世名厨,今天他接受邀请,在众人面前展示自己高超的厨艺。

人们给小 Y 提供了 种食物,每种食物无限量供应,每种食物都有一个美味值,记为 a_i

小 Y 为了展示他的厨艺,他需要挑选出食材,使自己可以烹饪出任意正整数美味值的菜肴,初始时菜肴的美味值为 每次加入一种食材,他可以选择让菜肴的美味值上升 a_i,也可以选择让菜肴的美味值下降 a_i(或许最后会弄出来黑暗料理?)。

作为当世名厨,小 Y 自然知道该怎么挑选食材最佳。可是他并不知道有多少种最佳的挑选食材方案,于是他找到了你来帮忙。

我们使用无序数列来表示从原来的n种食材中挑选出了m种食材,第i种食材编号为b_i的方案。同时你需要注意,为同一种方案且当时,

最佳的挑选食材方案指,挑选出 食材(),让他们能够组合出任意正整数美味值的菜肴

例如,当时,都是最佳的挑选食材方案

答案对 取模。

输入描述:

第一行一个正整数 
第二行 个正整数

输出描述:

输出一个数表示最佳的挑选食材方案的数量对 取模。
示例1

输入

复制
5
1 2 3 4 5

输出

复制
26
示例2

输入

复制
1
2

输出

复制
0