fun main(args: Array<String>) {
    val (n, k) = readLine()!!.split(' ').map(String::toInt)
    val dp = Array(n+10){Array(n+10){Array<Int>(k + 10){-1}}}
    val mod = 1000000000 + 7
    dp[0][0][0] = 1
    dp[0][1][2] = 1
    // i n -> 0, j 0 -> 増減 < i+1, k k -> 0
    fun calc(i: Int, j: Int, k: Int): Int{
        if(k < 0) return 0
        if(i < j - 1) return 0
        if(j < 0) return 0
        if(i < 0) return 0
        if(dp[i][j][k] != -1) return dp[i][j][k]
        if(i == 0) return 0

        val ret = (((2 * j + 1).toLong() * calc(i-1, j, k - 2 * j) +
                (j + 1) * (j + 1).toLong() * calc(i-1, j + 1, k - 2 * j) +
                calc(i-1, j - 1, k - 2 * j)) % mod).toInt()
        dp[i][j][k] = ret
        return ret
    }
    val ret = calc(n-1, 0, k)
    print(ret)
}