#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<deque>
#include<map>
#include<set>
#include<string>
#include<sstream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cctype>
#include<climits>
using namespace std;
#define REP(i, j) for(int i = 0; i < j; i++)
#define FOR(i, j, k) for(int i = j; i < k; i++)
#define P pair<int, string>
const int INF = INT_MAX / 2;
const int N = 11;

int n, s;

//void disp(int n){
//    stringstream ss;
//    for(int mask = 1; mask < (1 << N); mask = (mask << 1)){
//        if((n & mask) != 0) ss <<1;
//        else ss <<0;
//    }
//    string tmp = ss.str();
//    reverse(tmp.begin(), tmp.end());
//    cout <<tmp <<endl;
//}

int dfs(int sum, int cnt, int used){
    //cout <<sum <<" " <<cnt <<" "; disp(used);
    if(sum == s && cnt == n) return 1;
    else if(cnt >= n) return 0;
    int ret = 0;
    for(int mask = 1, num = 0; mask < (1 << N) && ((cnt + 1) * num) + sum <= s; mask = (mask << 1), ++num){
        if((used & mask) != 0) continue;
        used += mask;
        ret += dfs(((cnt + 1) * num) + sum, cnt + 1, used);
        used -= mask;
    }
    return ret;
}

int main(){
    while(cin >>n){
        cin >>s;
        cout <<dfs(0, 0, 0) <<endl;
    }
    return 0;
}