#include <bits/stdc++.h>
using namespace std;
int n, k;
long long dp[210][210][6][3];
bool kq[210][210][6][3];
long long c[210][210];
int add(long long u, long long v) { return (u + v) % 1000000007; }
int mul(long long u, long long v) { return (u * v) % 1000000007; }
int h[5] = {8, 6, 4, 2, 4};
int p[5] = {4, 2, 1, 0, 0};
long long Cal(int n, int k, int cur, int type) {
  if (k == 0) return 1;
  if (cur == 5) return 0;
  if (kq[n][k][cur][type]) return dp[n][k][cur][type];
  long long ans = 0;
  kq[n][k][cur][type] = true;
  if (type == 0) {
    if (n == 0) return 0;
    int x;
    if (cur == 4)
      x = 2;
    else
      x = 4 - cur;
    for (int i = 0; i <= min(x, k); i++)
      ans = add(ans, mul(Cal(n - 1, k - i, cur, 2), c[x][i]));
  } else if (type == 1) {
    if (n == 0) return 0;
    int u = h[cur], v = p[cur];
    for (int i = 0; i <= u; i++)
      for (int j = 0; j <= v; j++)
        if (i + 2 * j <= u && i + j <= k)
          ans = add(ans,
                    mul(Cal(n, k - i - j, cur, 0), c[v][j] * c[u - 2 * j][i]));
  } else {
    ans = add(ans, Cal(n, k, cur, 1));
    if (cur == 1) {
      if (k >= 1)
        ans = add(ans, Cal(n, k - 1, 2, 1) * 2 + Cal(n, k - 1, 4, 1) +
                           Cal(n, k - 1, 3, 1) * 2);
      if (k >= 2)
        ans = add(ans, Cal(n, k - 2, 3, 1) * 3 + Cal(n, k - 2, 5, 1) * 2);
      if (k >= 3) ans = add(ans, Cal(n, k - 3, 5, 1));
    } else if (cur == 2) {
      if (k >= 1) ans = add(ans, Cal(n, k - 1, 3, 1) * 2 + Cal(n, k - 1, 5, 1));
      if (k >= 2) ans = add(ans, Cal(n, k - 2, 5, 1));
    } else if (cur == 3)
      ans = add(ans, Cal(n, k - 1, 5, 1));
    else if (cur == 4) {
      if (k >= 1) ans = add(ans, Cal(n, k - 1, 3, 1) * 2);
      if (k >= 2) ans = add(ans, Cal(n, k - 2, 5, 1));
    } else {
      if (k >= 1)
        ans = add(ans, Cal(n, k - 1, 1, 1) * 4 + Cal(n, k - 1, 2, 1) * 4);
      if (k >= 2)
        ans = add(ans, Cal(n, k - 2, 2, 1) * 4 + Cal(n, k - 2, 4, 1) * 2 +
                           Cal(n, k - 2, 3, 1) * 8 + Cal(n, k - 2, 5, 1) * 2);
      if (k >= 3)
        ans = add(ans, Cal(n, k - 3, 3, 1) * 4 + Cal(n, k - 3, 5, 1) * 4);
      if (k >= 4) ans = add(ans, Cal(n, k - 4, 5, 1));
    }
  }
  dp[n][k][cur][type] = ans;
  return ans;
}
int main() {
  scanf("%d%d", &n, &k);
  c[0][0] = 1;
  for (int i = 1; i <= 10; i++)
    for (int j = 0; j <= i; j++)
      if (j == 0 || j == i)
        c[i][j] = 1;
      else
        c[i][j] = add(c[i - 1][j], c[i - 1][j - 1]);
  long long res = Cal(n, k, 0, 2);
  for (int i = 1; i <= k; i++) res = (res * i) % 1000000007;
  printf("%d\n", res);
  return 0;
}
