output_description: Print the number of permutations of {1,\ 2,\ ...,\ n} of oddness k, modulo
  10^9+7.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      n k
attempt: """
  
  https://atcoder.jp/contests/abc134/tasks/abc134_f
  
  少ないのは何？
  一応マッチングの問題といえる
  
  dp？
  数字 >= index の位置と、数字 < index の場合がある。
  前の場合の数字の和を An
  indexの和をAi
  後者を Bn / Biとする
  
  (An-Ai) + (Bi-Bn) = k となるようにすればいい
  
  
  箱根的に左から見ていく場合を考える。
  そこのindexと、そこに置いてあった数字をどうするか考える
  
  ●そこのindex
      取っておいた数字を置く→数字 < indexとなるので Biに加算 (正の寄与)
          →とっておいた数字が1以上ないとダメ
      開けておく　→ Aiに加算 (負の寄与)・後で埋めないとダメ
  
  ●そこの数字
      左の空いてるところに入れる　→　Anに加算 (正の寄与)・空きがないとダメ
      取っておく　→ Bnに加算 (負の寄与)
  
  dp[i][score][x][y] = i番目まで見て左に空きマスがx個あり、y個数字を取ってある場合の場合の数
  dp[n][score][0][0] が答え
  空きマスの数ととってある数字の個数は同じなので添え字を減らせる
  
  → dp[i][score][x] = i番目まで見て左に空きマスがx個あり、x個数字を取ってある場合の場合の数
  dp[n][k][0] が答え
  scoreの取りうる範囲は -n**2 ～ n**2でいいよね
  
  """
  
  n, k = map(int, input().split())
  
  scr = 10000
  
  dp = [[[0] * (n + 1) for i in range(scr)] for j in range(n + 1)]
  dp[0][0][0] = 1
  mod = 10**9 + 7
  
  for i in range(0, n):
      for nsc in range(-scr // 2, scr // 2):
          for x in range(n):
  
              # 今見ている数字はi+1で求められる
              nownum = i + 1
  
              # 何もしない場合
              dp[i + 1][nsc][x] += dp[i][nsc][x]
              dp[i + 1][nsc][x] %= mod
  
              # 数字を←に置き、取っておいた数字を置く場合
              # どちらも正の寄与なので +2nownum
              # xは1減る
              if x > 0:
                  dp[i + 1][(nsc + 2 * nownum) % scr][x - 1] += dp[i][nsc][x] * x * x
                  dp[i + 1][(nsc + 2 * nownum) % scr][x - 1] %= mod
  
              # 数字を左に置き、マスを空ける場合
              # 寄与は0
              # xは変わらず
              if x > 0:
                  dp[i + 1][nsc][x] += dp[i][nsc][x] * x
                  dp[i + 1][nsc][x] %= mod
  
              # 数字をとっておき、マスに入れる場合
              # 寄与は0
              # xは変わらず
              if x > 0:
                  dp[i + 1][nsc][x] += dp[i][nsc][x] * x
                  dp[i + 1][nsc][x] %= mod
  
              # 数字をとっておき、マスもとっておく場合
              # どちらも負の寄与
              # xは1ふえる
              if x < n:
                  dp[i + 1][(nsc - 2 * nownum) % scr][x + 1] += dp[i][nsc][x]
                  dp[i + 1][(nsc - 2 * nownum) % scr][x + 1] %= mod
  
  print(dp[n][k][0] % mod)
  
problem_description: Statement
  
  Let us define the _oddness_ of a permutation p = {p_1,\ p_2,\ ...,\ p_n} of
  {1,\ 2,\ ...,\ n} as \sum_{i = 1}^n |i - p_i|.
  
  Find the number of permutations of {1,\ 2,\ ...,\ n} of oddness k, modulo
  10^9+7.
samples: [{"input": "3 2", "output": "2\n    \n\nThere are six permutations of {1,\\ 2,\\ 3}. Among them, two have oddness of 2:\n{2,\\ 1,\\ 3} and {1,\\ 3,\\ 2}.\n\n* * *"}, {"input": "39 14", "output": "74764168"}]