#include <bits/stdc++.h>
using namespace std;

const int MOD = 1e9 + 7;

int main() {
    int n, k;
    scanf("%d%d", &n, &k);

    int dp[n + 2][n + 1][k + 1];
    memset(dp, 0, sizeof(dp));

    auto add = [&] (int &a, int b) {
        a += b;

        if(a >= MOD)
            a -= MOD;
    };

    dp[n + 1][0][k] = 1;
    for(int i = n; i > 0; i--) {
        for(int m = 0; m < i; m++) {
            for(int c = 0; c <= k; c++) {
                if(c + 2 * m <= k)
                    add(dp[i][m][c], dp[i + 1][m][c + 2 * m]);

                if(m > 0 && c + 2 * (m - 1) <= k)
                    add(dp[i][m][c], 1LL * dp[i + 1][m - 1][c + 2 * (m - 1)] * m % MOD * m % MOD);

                if(c + 2 * (m + 1) <= k)
                    add(dp[i][m][c], dp[i + 1][m + 1][c + 2 * (m + 1)]);
                
                if(c + 2 * m <= k)
                    add(dp[i][m][c], 2LL * dp[i + 1][m][c + 2 * m] % MOD * m % MOD);
            }
        }
    }
    
    printf("%d\n", dp[1][0][0]);
    return 0;
}