// #include <iostream>
// #include <cstring>

// using namespace std;

// int n, s;
// int dp[11][340][1 << 11];


// int dfs(int idx, int sum, int bit)
// {
//     int res = 0;

//     if (dp[idx][sum][bit] >= 0)
//         return dp[idx][sum][bit];

//     if (idx == n) {
//         if (sum == s)
//             return 1;
//         else
//             return 0;
//     }

//     for (int u = 0; u < 10; u++) {
//         if (!(bit >> u & 1)) {
//             if (sum + (idx + 1) * u <= s)
//                 res += dfs(idx + 1, sum + (idx + 1) * u, (bit | 1 << u));
//         }
//     }

//     return dp[idx][sum][bit] = res;
// }

// int main()
// {
//     while (cin >> n >> s) {
//         memset(dp, -1, sizeof(dp));
//         cout << dfs(0, 0, 0) << endl;
//     }

//     return 0;
// }
#include<iostream>
using namespace std;

int ans[12][1024];

void dfs(int bit,int d,int s){
	ans[d][s]++;
	for(int i=0;i<10;i++){
		if(bit&(1<<i))
			dfs(bit-(1<<i),d+1,s+(i*(d+1)));
	}
}

int main(){
	int n,s;
	dfs((1<<10)-1,0,0);
	while(cin>>n>>s)cout<<(s>1023?0:ans[n][s])<<endl;
}