program permutation_oddness
  implicit none
  integer(8), parameter :: md = 1000000007_8
  integer :: n, k, i, j, l
  integer(8) :: dp(0:50,-1:51,0:2500) = 0_8
  read(*,*) n, k
  if (mod(k,2) == 1) then
    write(*,'(i0)') 0
    stop
  end if
  dp(0,0,0) = 1_8
  do i = 1, n
    do l = k, 0, -1
      do j = 0, min(l/2,n)
        dp(i,j,l) = dp(i-1,j,l-2*j)*int(2*j+1,8)+ &
        &           dp(i-1,j+1,l-2*j)*int(j*j+2*j+1,8)+ &
        &           dp(i-1,j-1,l-2*j)
        dp(i,j,l) = mod(dp(i,j,l),md)
      end do
    end do
  end do
  write(*,'(i0)') dp(n,0,k)
  stop
end program permutation_oddness