#P5637. 奶牛的硬币

奶牛的硬币

题目描述

在创立了她们自己的政权之后,奶牛们决定推广新的货币系统。在强烈的叛逆心理的驱使下,她们准备使用奇怪的面值。在传统的货币系统中,硬币的面值通常是1{1,}5{5,}10{10,}20{20}25{25,}50{50,}以及100{100}单位的货币,有时为了更方便地交易,会发行面值为2{2}单位的硬币。

奶牛们想知道,对于一个给定的货币系统,如果需要正好凑出一定数量的钱,会有多少种不同的方法。比如说,你手上有无限多个面值为{1{\{1,}2{2,}5{5,}10{10,}...}{\}}的硬币,并且打算凑出18{18}单位货币,那么你有多种方法来达到你的目的:18×1{18\times1,}9×2{9\times2,}8×2+2×1{8\times2+2\times1 ,}3×5+2+1{3\times5+2+1,}以及其他的未列出的若干方案。 请你写一个程序,帮奶牛们计算一下,如果想用有V(1<=V<=25){V (1 <= V <= 25)}种面值的硬币,凑出总价值为N(1<=N<=10,000){N(1 <= N <= 10,000)}的一堆钱,一共有多少种不同的方法。答案保证不会超出C/C++{C/C++}中的'longlong{long long}',Pascal{Pascal}中的'Int64{Int64}',或是Java{Java}中的'long{long}'的范围。

输入格式

1{1}行: 2{2}个用空格隔开的整数:V{V}N{N}

2..V+1{2..V+1}行: 每行1{1}个整数,表示1{1}种硬币面值

输出格式

1{1}行: 输出1{1}个正整数,表示用这V{V}种面值的硬币,凑出N{N}单位的货币的不同方法总数。

样例

输入样例

3 10
1
2
5

输出样例

10