#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 200 + 10, MOD = 1000000007;
long long n, m, c[MAXN][MAXN], f[MAXN][MAXN][5];
bool vis[MAXN][MAXN][5];
long long DFS(long long n, long long m, long long d) {
  if (vis[n][m][d]) return f[n][m][d];
  if ((n * 3 - 2) * d < m) return 0;
  if (m == 0) return 1;
  if (m < 0) return 0;
  vis[n][m][d] = 1;
  long long &Tohka = f[n][m][d];
  for (long long i = 0; i <= m; ++i)
    for (long long j = 0; j <= d - (d != 4) && j <= i; ++j)
      Tohka = ((long long)Tohka + (long long)DFS(n - 1, m - i, d) *
                                      c[d * 3 - j * 2][i - j] *
                                      c[d - (d != 4)][j]) %
              MOD;
  if (d == 1) Tohka += (m == 1);
  if (d == 2)
    Tohka = ((long long)Tohka + (long long)DFS(n, m - 1, d - 1) * 2) % MOD,
    Tohka += (m == 1) - (m == 2);
  if (d == 3) {
    Tohka = ((long long)Tohka + (long long)DFS(n, m - 1, d - 1) * 2) % MOD;
    for (long long i = 0; i < m; ++i)
      Tohka =
          ((long long)Tohka + (long long)DFS(n, i, 1) * DFS(n, m - 1 - i, 1)) %
          MOD;
    Tohka =
        (Tohka - (long long)DFS(n, m - 2, 1) * 3 % MOD + MOD + (m == 3)) % MOD;
    Tohka =
        ((long long)Tohka + (long long)DFS(n, m - 1, 1) * 2 - (m == 2) * 2) %
        MOD;
  }
  if (d == 4) {
    Tohka = ((long long)Tohka + (long long)DFS(n, m - 1, d - 1) * 4 -
             (long long)DFS(n, m - 2, d - 2) * 4 % MOD + MOD) %
            MOD;
    for (long long i = 0; i < m - 1; ++i)
      Tohka = (Tohka -
               (long long)DFS(n, i, 1) * DFS(n, m - 2 - i, 1) * 2 % MOD + MOD) %
              MOD;
    Tohka = ((long long)Tohka + (long long)DFS(n, m - 3, 1) * 4 % MOD + MOD -
             (m == 4) + (m == 3) * 4) %
            MOD;
    Tohka = ((long long)Tohka + (long long)DFS(n, m - 1, 2) * 4 -
             (long long)DFS(n, m - 2, 1) * 8 - (m == 2) * 2 + MOD * 8) %
            MOD;
  }
  return Tohka;
}
int main() {
  for (long long i = 0; i < MAXN; ++i)
    for (long long j = 0; j <= i; ++j)
      c[i][j] = (j) ? (c[i - 1][j] + c[i - 1][j - 1]) % MOD : 1;
  cin >> n >> m;
  long long Tohka = DFS(n + 1, m, 4);
  for (long long i = 1; i <= m; ++i) Tohka = (long long)Tohka * i % MOD;
  cout << Tohka << endl;
  fclose(stdin);
  fclose(stdout);
  return 0;
}
