#include <iostream>
#include <vector>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <set>
#include <map>
#include <queue>
#include <iomanip>
#include <cassert>

using namespace std;

typedef long long ll;
const ll mod = 1000000007;

ll dp[51][51][6000];

int main() {
    int n, k;
    cin >> n >> k;
    dp[0][0][0] = 1;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            for (int s = 0; s <= n*n; s++) {
                dp[i+1][j][s+j*2] += dp[i][j][s];
                dp[i+1][j][s+j*2] %= mod;

                dp[i+1][j+1][s+(j+1)*2] += dp[i][j][s];
                dp[i+1][j+1][s+(j+1)*2] %= mod;

                dp[i+1][j][s+j*2] += dp[i][j][s] * j*2;
                dp[i+1][j][s+j*2] %= mod;

                if (j-1 >= 0) {
                    dp[i+1][j-1][s+(j-1)*2] += dp[i][j][s] * j*j;
                    dp[i+1][j-1][s+(j-1)*2] %= mod;
                }
            }
        }
    }

    cout << dp[n][0][k] << endl;

    return 0;
}