#include <algorithm>
#include <bitset>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <climits>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#define ALL(A)		(A).begin(),(A).end()
#define DUMP(A)    cout<<#A<<"="<<(A)<< endl
#define SIZE(A)    (int)((A).size())
using namespace std;
typedef long long ll;

int ret;
bool used[10];
int S;
int dat[11][1000];
void solve(int nsum,int at){
    if(at==11) return;
    else{
        if(nsum<1000) dat[at][nsum]++;
        for(int i=0;i<10;i++){
            if(!used[i]){
                used[i]=true;
                solve(nsum+i*(at+1),at+1);
                used[i]=false;
            }
        }
    }
}

int main(){
    for(int i=0;i<10;i++){
        for(int j=0;j<1000;j++){
            dat[i][j]=0;
        }
    }
    solve(0,0);
    int N,S;
    while(scanf("%d%d",&N,&S)!=-1){
        if(S>=1000) printf("0\n");
        else printf("%d\n",dat[N][S]);
    }
}