#include <bits/stdc++.h>
#define rep(i,n) for(int i=(0);i<(n);i++)

using namespace std;

typedef long long ll;

ll MOD = 1e9+7;

int main()
{
	cin.tie(0);
	ios::sync_with_stdio(false);

	int N, K;
	cin >> N >> K;

	static ll dp[51][51][2501];
	rep(i, N+1) rep(j, N+1) rep(k, N*N+1) dp[i][j][k] = 0;
	dp[0][0][0] = 1;

	rep(i, N) rep(j, N) rep(k, K+1){
		if(k + 2*j > N*N) continue;

		// 今の玉を今の箱に入れる
		dp[i+1][j][k+2*j] += dp[i][j][k];
		dp[i+1][j][k+2*j] %= MOD;

		// 今の玉を保留箱に入れ、今の箱を保留
		dp[i+1][j][k+2*j] += j * dp[i][j][k];
		dp[i+1][j][k+2*j] %= MOD;

		// 今の玉を保留箱に入れ、今の箱に保留玉を入れる
		if(j-1 >= 0){
			dp[i+1][j-1][k+2*j] += j * j * dp[i][j][k];
			dp[i+1][j-1][k+2*j] %= MOD;
		}

		// 今の玉を保留、今の箱に保留玉を入れる
		dp[i+1][j][k+2*j] += j * dp[i][j][k];
		dp[i+1][j][k+2*j] %= MOD;

		// 今の玉を保留、今の箱も保留
		if(j+1 <= N){
			dp[i+1][j+1][k+2*j] += dp[i][j][k];
			dp[i+1][j+1][k+2*j] %= MOD;
		}
	}

	cout << dp[N][0][K] << endl;
}
