M=10**9+7
N,K=gets.split.map(&:to_i)
if K.odd?
  p 0
  exit
end
dp=Array.new(N+1){Array.new(N+1){Array.new(N*N){0}}}
dp[0][0][0]=1
N.times do |i|
  N.times do |j|
    0.upto(K/2) do |k|
      dp[i][j][k] %= M
      # 新規同士で繋げる
      dp[i+1][j][k+j] += dp[i][j][k]
      # 片方だけ保留と繋げる
      dp[i+1][j][k+j] += 2 * j * dp[i][j][k]
      # 両方とも保留と繋げる
      dp[i+1][j-1][k+j-1] += j * j * dp[i][j][k] if 0<=j-1
      # 両方とも保留する
      dp[i+1][j+1][k+j+1] += dp[i][j][k]
    end
  end
end
p dp[N][0][K/2]%M