#include <iostream>

using namespace std;

long long dp[55][55][2605];
long long mod = 1e9 + 7;

int main(int argc, char *argv[])
{
	int n, k;

	cin >> n >> k;
	dp[0][0][0] = 1;

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < i + 1; j++) {
			for (int l = 0; l < k + 1; l++) {
				int nj = j;
				(dp[i + 1][nj][l + nj * 2] += dp[i][j][l]) %= mod;

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

				nj = j;
				int x = j * 2 % mod;
				(dp[i + 1][nj][l + nj * 2] += dp[i][j][l] * x) %= mod;

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

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

	return 0;
}