#include <iostream>
#include <vector>
#include <exception>
using namespace std;
class CoinChange{
    public:
    static long long result;
    static void countCombinations(int n, vector<int>&coins, int amount){
        if(n<=0 || amount <0)
        throw invalid_argument("Invalid input");
        for(int coin : coins){
            if(coin<=0)
            throw invalid_argument("Invalid input");
        }
        vector<long long>dp(amount + 1, 0);
        dp[0] = 1;
        for(int coin : coins){
            for(int i = coin; i<= amount; i++){
                dp[i] += dp[i - coin];
            }
        }
        result = dp[amount];
    }
};
long long CoinChange :: result = 0;

int main(){
    try{
        int n;
        cin>>n;
        if(n<=0)
        throw invalid_argument("Invalid input");
    }
    int amount;
    cin>>amount;
    if(amount<0)
    throw invalid_argument("Invalid input");
    CoinChange :: countCombinations(n, coins, amount);
    if(CoinChange::result == 0)
    cout<<"No";
    else
    cout<<CoinChange::result;
}
catch(const invaild_arguments& e){
    cout<<"Invalid input";
}
return 0;
}