Problem: Vasily the bear has two favorite integers n and k and a pencil. Besides, he's got k jars with different water color paints. All jars are numbered in some manner from 1 to k, inclusive. The jar number i contains the paint of the i-th color. 

Initially the bear took a pencil and drew four segments on the coordinate plane. All of them end at point (0, 0). They begin at: (0, 2n), (0, - 2n), (2n, 0), ( - 2n, 0). Then for each i = 1, 2, ..., n, the bear drew two squares. The first square has the following vertex coordinates: (2i, 0), ( - 2i, 0), (0, - 2i), (0, 2i). The second square has the following vertex coordinates: ( - 2i - 1, - 2i - 1), ( - 2i - 1, 2i - 1), (2i - 1, - 2i - 1), (2i - 1, 2i - 1). After that, the bear drew another square: (1, 0), ( - 1, 0), (0, - 1), (0, 1). All points mentioned above form the set of points A.

<image>

The sample of the final picture at n = 0

<image>

The sample of the final picture at n = 2

The bear decided to paint the resulting picture in k moves. The i-th move consists of the following stages: 

  1. The bear chooses 3 distinct points in set А so that any pair of the chosen points has a segment on the picture between them. The chosen points and segments mark the area that mustn't contain any previously painted points. 
  2. The bear paints the area bounded by the chosen points and segments the i-th color. 



Note that after the k-th move some parts of the picture can stay unpainted.

The bear asked you to calculate, how many distinct ways there are to paint his picture. A way to paint the picture is a sequence of three-element sets of points he chose on each step. Two sequences are considered distinct if there is such number i (1 ≤ i ≤ k), that the i-th members of these sequences do not coincide as sets. As the sought number can be rather large, you only need to calculate the remainder after dividing it by number 1000000007 (109 + 7).

Input

The first line contains two integers n and k, separated by a space (0 ≤ n, k ≤ 200).

Output

Print exactly one integer — the answer to the problem modulo 1000000007 (109 + 7).

Examples

Input

0 0


Output

1


Input

0 1


Output

8


Input

0 2


Output

32


Input

1 1


Output

32

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
int i, j, m, n, p, k, A[100005], B[100005], C[100005], D[100005],
    f[205][205][40], cnt, com[40][40], l;
void pre() {
  for (i = 0; i < 40; ++i) {
    com[i][0] = 1;
    for (j = 1; j <= i; ++j)
      com[i][j] = (com[i - 1][j] + com[i - 1][j - 1]) % 1000000007;
  }
}
int fac(int x) {
  int sum = 1, i;
  for (i = 1; i <= x; ++i) sum = 1ll * sum * i % 1000000007;
  return sum;
}
void jia(int &x, int y) {
  x += y;
  if (x >= 1000000007) x -= 1000000007;
}
int main() {
  pre();
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 12;
  D[cnt] = 0;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 11;
  D[cnt] = 1;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 11;
  D[cnt] = 1;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 10;
  D[cnt] = 2;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 11;
  D[cnt] = 1;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 10;
  D[cnt] = 2;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 10;
  D[cnt] = 2;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 9;
  D[cnt] = 3;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 11;
  D[cnt] = 1;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 10;
  D[cnt] = 2;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 10;
  D[cnt] = 2;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 9;
  D[cnt] = 3;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 10;
  D[cnt] = 2;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 9;
  D[cnt] = 3;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 9;
  D[cnt] = 3;
  A[++cnt] = 1;
  B[cnt] = 1;
  C[cnt] = 8;
  D[cnt] = 4;
  A[++cnt] = 2;
  B[cnt] = 1;
  C[cnt] = 10;
  D[cnt] = 1;
  A[++cnt] = 2;
  B[cnt] = 1;
  C[cnt] = 9;
  D[cnt] = 2;
  A[++cnt] = 2;
  B[cnt] = 1;
  C[cnt] = 9;
  D[cnt] = 2;
  A[++cnt] = 2;
  B[cnt] = 1;
  C[cnt] = 8;
  D[cnt] = 3;
  A[++cnt] = 2;
  B[cnt] = 2;
  C[cnt] = 9;
  D[cnt] = 0;
  A[++cnt] = 2;
  B[cnt] = 2;
  C[cnt] = 8;
  D[cnt] = 1;
  A[++cnt] = 2;
  B[cnt] = 2;
  C[cnt] = 8;
  D[cnt] = 1;
  A[++cnt] = 2;
  B[cnt] = 2;
  C[cnt] = 7;
  D[cnt] = 2;
  A[++cnt] = 3;
  B[cnt] = 1;
  C[cnt] = 10;
  D[cnt] = 1;
  A[++cnt] = 3;
  B[cnt] = 1;
  C[cnt] = 9;
  D[cnt] = 2;
  A[++cnt] = 3;
  B[cnt] = 1;
  C[cnt] = 9;
  D[cnt] = 2;
  A[++cnt] = 3;
  B[cnt] = 1;
  C[cnt] = 8;
  D[cnt] = 3;
  A[++cnt] = 3;
  B[cnt] = 3;
  C[cnt] = 9;
  D[cnt] = 0;
  A[++cnt] = 3;
  B[cnt] = 3;
  C[cnt] = 8;
  D[cnt] = 1;
  A[++cnt] = 3;
  B[cnt] = 3;
  C[cnt] = 8;
  D[cnt] = 1;
  A[++cnt] = 3;
  B[cnt] = 3;
  C[cnt] = 7;
  D[cnt] = 2;
  A[++cnt] = 4;
  B[cnt] = 1;
  C[cnt] = 8;
  D[cnt] = 2;
  A[++cnt] = 4;
  B[cnt] = 1;
  C[cnt] = 7;
  D[cnt] = 3;
  A[++cnt] = 4;
  B[cnt] = 2;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 4;
  B[cnt] = 2;
  C[cnt] = 6;
  D[cnt] = 2;
  A[++cnt] = 4;
  B[cnt] = 3;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 4;
  B[cnt] = 3;
  C[cnt] = 6;
  D[cnt] = 2;
  A[++cnt] = 4;
  B[cnt] = 4;
  C[cnt] = 6;
  D[cnt] = 0;
  A[++cnt] = 4;
  B[cnt] = 4;
  C[cnt] = 5;
  D[cnt] = 1;
  A[++cnt] = 5;
  B[cnt] = 1;
  C[cnt] = 10;
  D[cnt] = 1;
  A[++cnt] = 5;
  B[cnt] = 1;
  C[cnt] = 9;
  D[cnt] = 2;
  A[++cnt] = 5;
  B[cnt] = 1;
  C[cnt] = 9;
  D[cnt] = 2;
  A[++cnt] = 5;
  B[cnt] = 1;
  C[cnt] = 8;
  D[cnt] = 3;
  A[++cnt] = 5;
  B[cnt] = 5;
  C[cnt] = 9;
  D[cnt] = 0;
  A[++cnt] = 5;
  B[cnt] = 5;
  C[cnt] = 8;
  D[cnt] = 1;
  A[++cnt] = 5;
  B[cnt] = 5;
  C[cnt] = 8;
  D[cnt] = 1;
  A[++cnt] = 5;
  B[cnt] = 5;
  C[cnt] = 7;
  D[cnt] = 2;
  A[++cnt] = 6;
  B[cnt] = 1;
  C[cnt] = 8;
  D[cnt] = 2;
  A[++cnt] = 6;
  B[cnt] = 2;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 6;
  B[cnt] = 5;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 6;
  B[cnt] = 6;
  C[cnt] = 6;
  D[cnt] = 0;
  A[++cnt] = 7;
  B[cnt] = 1;
  C[cnt] = 8;
  D[cnt] = 2;
  A[++cnt] = 7;
  B[cnt] = 1;
  C[cnt] = 7;
  D[cnt] = 3;
  A[++cnt] = 7;
  B[cnt] = 3;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 7;
  B[cnt] = 3;
  C[cnt] = 6;
  D[cnt] = 2;
  A[++cnt] = 7;
  B[cnt] = 5;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 7;
  B[cnt] = 5;
  C[cnt] = 6;
  D[cnt] = 2;
  A[++cnt] = 7;
  B[cnt] = 7;
  C[cnt] = 6;
  D[cnt] = 0;
  A[++cnt] = 7;
  B[cnt] = 7;
  C[cnt] = 5;
  D[cnt] = 1;
  A[++cnt] = 8;
  B[cnt] = 1;
  C[cnt] = 6;
  D[cnt] = 3;
  A[++cnt] = 8;
  B[cnt] = 2;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 8;
  B[cnt] = 3;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 8;
  B[cnt] = 4;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 8;
  B[cnt] = 5;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 8;
  B[cnt] = 6;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 8;
  B[cnt] = 7;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 8;
  B[cnt] = 8;
  C[cnt] = 3;
  D[cnt] = 0;
  A[++cnt] = 9;
  B[cnt] = 1;
  C[cnt] = 10;
  D[cnt] = 1;
  A[++cnt] = 9;
  B[cnt] = 1;
  C[cnt] = 9;
  D[cnt] = 2;
  A[++cnt] = 9;
  B[cnt] = 1;
  C[cnt] = 9;
  D[cnt] = 2;
  A[++cnt] = 9;
  B[cnt] = 1;
  C[cnt] = 8;
  D[cnt] = 3;
  A[++cnt] = 9;
  B[cnt] = 9;
  C[cnt] = 9;
  D[cnt] = 0;
  A[++cnt] = 9;
  B[cnt] = 9;
  C[cnt] = 8;
  D[cnt] = 1;
  A[++cnt] = 9;
  B[cnt] = 9;
  C[cnt] = 8;
  D[cnt] = 1;
  A[++cnt] = 9;
  B[cnt] = 9;
  C[cnt] = 7;
  D[cnt] = 2;
  A[++cnt] = 10;
  B[cnt] = 1;
  C[cnt] = 8;
  D[cnt] = 2;
  A[++cnt] = 10;
  B[cnt] = 1;
  C[cnt] = 7;
  D[cnt] = 3;
  A[++cnt] = 10;
  B[cnt] = 2;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 10;
  B[cnt] = 2;
  C[cnt] = 6;
  D[cnt] = 2;
  A[++cnt] = 10;
  B[cnt] = 9;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 10;
  B[cnt] = 9;
  C[cnt] = 6;
  D[cnt] = 2;
  A[++cnt] = 10;
  B[cnt] = 10;
  C[cnt] = 6;
  D[cnt] = 0;
  A[++cnt] = 10;
  B[cnt] = 10;
  C[cnt] = 5;
  D[cnt] = 1;
  A[++cnt] = 11;
  B[cnt] = 1;
  C[cnt] = 8;
  D[cnt] = 2;
  A[++cnt] = 11;
  B[cnt] = 3;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 11;
  B[cnt] = 9;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 11;
  B[cnt] = 11;
  C[cnt] = 6;
  D[cnt] = 0;
  A[++cnt] = 12;
  B[cnt] = 1;
  C[cnt] = 6;
  D[cnt] = 3;
  A[++cnt] = 12;
  B[cnt] = 2;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 12;
  B[cnt] = 3;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 12;
  B[cnt] = 4;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 12;
  B[cnt] = 9;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 12;
  B[cnt] = 10;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 12;
  B[cnt] = 11;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 12;
  B[cnt] = 12;
  C[cnt] = 3;
  D[cnt] = 0;
  A[++cnt] = 13;
  B[cnt] = 1;
  C[cnt] = 8;
  D[cnt] = 2;
  A[++cnt] = 13;
  B[cnt] = 1;
  C[cnt] = 7;
  D[cnt] = 3;
  A[++cnt] = 13;
  B[cnt] = 5;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 13;
  B[cnt] = 5;
  C[cnt] = 6;
  D[cnt] = 2;
  A[++cnt] = 13;
  B[cnt] = 9;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 13;
  B[cnt] = 9;
  C[cnt] = 6;
  D[cnt] = 2;
  A[++cnt] = 13;
  B[cnt] = 13;
  C[cnt] = 6;
  D[cnt] = 0;
  A[++cnt] = 13;
  B[cnt] = 13;
  C[cnt] = 5;
  D[cnt] = 1;
  A[++cnt] = 14;
  B[cnt] = 1;
  C[cnt] = 6;
  D[cnt] = 3;
  A[++cnt] = 14;
  B[cnt] = 2;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 14;
  B[cnt] = 5;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 14;
  B[cnt] = 6;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 14;
  B[cnt] = 9;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 14;
  B[cnt] = 10;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 14;
  B[cnt] = 13;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 14;
  B[cnt] = 14;
  C[cnt] = 3;
  D[cnt] = 0;
  A[++cnt] = 15;
  B[cnt] = 1;
  C[cnt] = 6;
  D[cnt] = 3;
  A[++cnt] = 15;
  B[cnt] = 3;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 15;
  B[cnt] = 5;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 15;
  B[cnt] = 7;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 15;
  B[cnt] = 9;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 15;
  B[cnt] = 11;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 15;
  B[cnt] = 13;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 15;
  B[cnt] = 15;
  C[cnt] = 3;
  D[cnt] = 0;
  A[++cnt] = 16;
  B[cnt] = 1;
  C[cnt] = 4;
  D[cnt] = 4;
  A[++cnt] = 16;
  B[cnt] = 2;
  C[cnt] = 3;
  D[cnt] = 3;
  A[++cnt] = 16;
  B[cnt] = 3;
  C[cnt] = 3;
  D[cnt] = 3;
  A[++cnt] = 16;
  B[cnt] = 4;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 16;
  B[cnt] = 5;
  C[cnt] = 3;
  D[cnt] = 3;
  A[++cnt] = 16;
  B[cnt] = 6;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 16;
  B[cnt] = 7;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 16;
  B[cnt] = 8;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 16;
  B[cnt] = 9;
  C[cnt] = 3;
  D[cnt] = 3;
  A[++cnt] = 16;
  B[cnt] = 10;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 16;
  B[cnt] = 11;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 16;
  B[cnt] = 12;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 16;
  B[cnt] = 13;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 16;
  B[cnt] = 14;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 16;
  B[cnt] = 15;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 16;
  B[cnt] = 16;
  C[cnt] = 0;
  D[cnt] = 0;
  A[++cnt] = 17;
  B[cnt] = 1;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 17;
  B[cnt] = 1;
  C[cnt] = 6;
  D[cnt] = 2;
  A[++cnt] = 17;
  B[cnt] = 17;
  C[cnt] = 6;
  D[cnt] = 0;
  A[++cnt] = 17;
  B[cnt] = 17;
  C[cnt] = 5;
  D[cnt] = 1;
  A[++cnt] = 18;
  B[cnt] = 1;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 18;
  B[cnt] = 5;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 18;
  B[cnt] = 17;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 18;
  B[cnt] = 18;
  C[cnt] = 3;
  D[cnt] = 0;
  A[++cnt] = 19;
  B[cnt] = 1;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 19;
  B[cnt] = 9;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 19;
  B[cnt] = 17;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 19;
  B[cnt] = 19;
  C[cnt] = 3;
  D[cnt] = 0;
  A[++cnt] = 20;
  B[cnt] = 1;
  C[cnt] = 3;
  D[cnt] = 3;
  A[++cnt] = 20;
  B[cnt] = 5;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 20;
  B[cnt] = 9;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 20;
  B[cnt] = 13;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 20;
  B[cnt] = 17;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 20;
  B[cnt] = 18;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 20;
  B[cnt] = 19;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 20;
  B[cnt] = 20;
  C[cnt] = 0;
  D[cnt] = 0;
  A[++cnt] = 21;
  B[cnt] = 1;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 21;
  B[cnt] = 1;
  C[cnt] = 6;
  D[cnt] = 2;
  A[++cnt] = 21;
  B[cnt] = 21;
  C[cnt] = 6;
  D[cnt] = 0;
  A[++cnt] = 21;
  B[cnt] = 21;
  C[cnt] = 5;
  D[cnt] = 1;
  A[++cnt] = 22;
  B[cnt] = 1;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 22;
  B[cnt] = 2;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 22;
  B[cnt] = 21;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 22;
  B[cnt] = 22;
  C[cnt] = 3;
  D[cnt] = 0;
  A[++cnt] = 23;
  B[cnt] = 1;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 23;
  B[cnt] = 9;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 23;
  B[cnt] = 21;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 23;
  B[cnt] = 23;
  C[cnt] = 3;
  D[cnt] = 0;
  A[++cnt] = 24;
  B[cnt] = 1;
  C[cnt] = 3;
  D[cnt] = 3;
  A[++cnt] = 24;
  B[cnt] = 2;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 24;
  B[cnt] = 9;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 24;
  B[cnt] = 10;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 24;
  B[cnt] = 21;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 24;
  B[cnt] = 22;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 24;
  B[cnt] = 23;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 24;
  B[cnt] = 24;
  C[cnt] = 0;
  D[cnt] = 0;
  A[++cnt] = 25;
  B[cnt] = 1;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 25;
  B[cnt] = 1;
  C[cnt] = 6;
  D[cnt] = 2;
  A[++cnt] = 25;
  B[cnt] = 25;
  C[cnt] = 6;
  D[cnt] = 0;
  A[++cnt] = 25;
  B[cnt] = 25;
  C[cnt] = 5;
  D[cnt] = 1;
  A[++cnt] = 26;
  B[cnt] = 1;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 26;
  B[cnt] = 2;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 26;
  B[cnt] = 25;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 26;
  B[cnt] = 26;
  C[cnt] = 3;
  D[cnt] = 0;
  A[++cnt] = 27;
  B[cnt] = 1;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 27;
  B[cnt] = 3;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 27;
  B[cnt] = 25;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 27;
  B[cnt] = 27;
  C[cnt] = 3;
  D[cnt] = 0;
  A[++cnt] = 28;
  B[cnt] = 1;
  C[cnt] = 3;
  D[cnt] = 3;
  A[++cnt] = 28;
  B[cnt] = 2;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 28;
  B[cnt] = 3;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 28;
  B[cnt] = 4;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 28;
  B[cnt] = 25;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 28;
  B[cnt] = 26;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 28;
  B[cnt] = 27;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 28;
  B[cnt] = 28;
  C[cnt] = 0;
  D[cnt] = 0;
  A[++cnt] = 29;
  B[cnt] = 1;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 29;
  B[cnt] = 17;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 29;
  B[cnt] = 25;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 29;
  B[cnt] = 29;
  C[cnt] = 0;
  D[cnt] = 0;
  A[++cnt] = 30;
  B[cnt] = 1;
  C[cnt] = 7;
  D[cnt] = 1;
  A[++cnt] = 30;
  B[cnt] = 1;
  C[cnt] = 6;
  D[cnt] = 2;
  A[++cnt] = 30;
  B[cnt] = 30;
  C[cnt] = 6;
  D[cnt] = 0;
  A[++cnt] = 30;
  B[cnt] = 30;
  C[cnt] = 5;
  D[cnt] = 1;
  A[++cnt] = 31;
  B[cnt] = 1;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 31;
  B[cnt] = 3;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 31;
  B[cnt] = 30;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 31;
  B[cnt] = 31;
  C[cnt] = 3;
  D[cnt] = 0;
  A[++cnt] = 32;
  B[cnt] = 1;
  C[cnt] = 5;
  D[cnt] = 2;
  A[++cnt] = 32;
  B[cnt] = 5;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 32;
  B[cnt] = 30;
  C[cnt] = 4;
  D[cnt] = 1;
  A[++cnt] = 32;
  B[cnt] = 32;
  C[cnt] = 3;
  D[cnt] = 0;
  A[++cnt] = 33;
  B[cnt] = 1;
  C[cnt] = 3;
  D[cnt] = 3;
  A[++cnt] = 33;
  B[cnt] = 3;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 33;
  B[cnt] = 5;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 33;
  B[cnt] = 7;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 33;
  B[cnt] = 30;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 33;
  B[cnt] = 31;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 33;
  B[cnt] = 32;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 33;
  B[cnt] = 33;
  C[cnt] = 0;
  D[cnt] = 0;
  A[++cnt] = 34;
  B[cnt] = 1;
  C[cnt] = 2;
  D[cnt] = 2;
  A[++cnt] = 34;
  B[cnt] = 21;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 34;
  B[cnt] = 30;
  C[cnt] = 1;
  D[cnt] = 1;
  A[++cnt] = 34;
  B[cnt] = 34;
  C[cnt] = 0;
  D[cnt] = 0;
  f[0][0][1] += com[4][0];
  f[0][1][1] += com[4][1];
  f[0][2][1] += com[4][2];
  f[0][3][1] += com[4][3];
  f[0][4][1] += com[4][4];
  f[0][1][1] += com[2][0];
  f[0][2][1] += com[2][1];
  f[0][3][1] += com[2][2];
  f[0][1][1] += com[2][0];
  f[0][2][1] += com[2][1];
  f[0][3][1] += com[2][2];
  f[0][1][1] += com[2][0];
  f[0][2][1] += com[2][1];
  f[0][3][1] += com[2][2];
  f[0][2][1] += com[0][0];
  f[0][1][1] += com[2][0];
  f[0][2][1] += com[2][1];
  f[0][3][1] += com[2][2];
  f[0][2][1] += com[0][0];
  f[0][0][2] += com[3][0];
  f[0][1][2] += com[3][1];
  f[0][2][2] += com[3][2];
  f[0][3][2] += com[3][3];
  f[0][1][2] += com[1][0];
  f[0][2][2] += com[1][1];
  f[0][1][2] += com[1][0];
  f[0][2][2] += com[1][1];
  f[0][0][3] += com[3][0];
  f[0][1][3] += com[3][1];
  f[0][2][3] += com[3][2];
  f[0][3][3] += com[3][3];
  f[0][1][3] += com[1][0];
  f[0][2][3] += com[1][1];
  f[0][1][3] += com[1][0];
  f[0][2][3] += com[1][1];
  f[0][0][4] += com[2][0];
  f[0][1][4] += com[2][1];
  f[0][2][4] += com[2][2];
  f[0][1][4] += com[0][0];
  f[0][0][5] += com[3][0];
  f[0][1][5] += com[3][1];
  f[0][2][5] += com[3][2];
  f[0][3][5] += com[3][3];
  f[0][1][5] += com[1][0];
  f[0][2][5] += com[1][1];
  f[0][1][5] += com[1][0];
  f[0][2][5] += com[1][1];
  f[0][0][6] += com[2][0];
  f[0][1][6] += com[2][1];
  f[0][2][6] += com[2][2];
  f[0][0][7] += com[2][0];
  f[0][1][7] += com[2][1];
  f[0][2][7] += com[2][2];
  f[0][1][7] += com[0][0];
  f[0][0][8] += com[1][0];
  f[0][1][8] += com[1][1];
  f[0][0][9] += com[3][0];
  f[0][1][9] += com[3][1];
  f[0][2][9] += com[3][2];
  f[0][3][9] += com[3][3];
  f[0][1][9] += com[1][0];
  f[0][2][9] += com[1][1];
  f[0][1][9] += com[1][0];
  f[0][2][9] += com[1][1];
  f[0][0][10] += com[2][0];
  f[0][1][10] += com[2][1];
  f[0][2][10] += com[2][2];
  f[0][1][10] += com[0][0];
  f[0][0][11] += com[2][0];
  f[0][1][11] += com[2][1];
  f[0][2][11] += com[2][2];
  f[0][0][12] += com[1][0];
  f[0][1][12] += com[1][1];
  f[0][0][13] += com[2][0];
  f[0][1][13] += com[2][1];
  f[0][2][13] += com[2][2];
  f[0][1][13] += com[0][0];
  f[0][0][14] += com[1][0];
  f[0][1][14] += com[1][1];
  f[0][0][15] += com[1][0];
  f[0][1][15] += com[1][1];
  f[0][0][16] += com[0][0];
  f[0][0][17] += com[2][0];
  f[0][1][17] += com[2][1];
  f[0][2][17] += com[2][2];
  f[0][1][17] += com[0][0];
  f[0][0][18] += com[1][0];
  f[0][1][18] += com[1][1];
  f[0][0][19] += com[1][0];
  f[0][1][19] += com[1][1];
  f[0][0][20] += com[0][0];
  f[0][0][21] += com[2][0];
  f[0][1][21] += com[2][1];
  f[0][2][21] += com[2][2];
  f[0][1][21] += com[0][0];
  f[0][0][22] += com[1][0];
  f[0][1][22] += com[1][1];
  f[0][0][23] += com[1][0];
  f[0][1][23] += com[1][1];
  f[0][0][24] += com[0][0];
  f[0][0][25] += com[2][0];
  f[0][1][25] += com[2][1];
  f[0][2][25] += com[2][2];
  f[0][1][25] += com[0][0];
  f[0][0][26] += com[1][0];
  f[0][1][26] += com[1][1];
  f[0][0][27] += com[1][0];
  f[0][1][27] += com[1][1];
  f[0][0][28] += com[0][0];
  f[0][0][29] += com[0][0];
  f[0][0][30] += com[2][0];
  f[0][1][30] += com[2][1];
  f[0][2][30] += com[2][2];
  f[0][1][30] += com[0][0];
  f[0][0][31] += com[1][0];
  f[0][1][31] += com[1][1];
  f[0][0][32] += com[1][0];
  f[0][1][32] += com[1][1];
  f[0][0][33] += com[0][0];
  f[0][0][34] += com[0][0];
  scanf("%d%d", &n, &k);
  for (i = 0; i < n; ++i)
    for (j = 0; j <= k; ++j)
      for (l = 1; l <= cnt; ++l)
        if (f[i][j][A[l]])
          for (p = D[l]; p <= C[l] && j + p <= k; ++p)
            jia(f[i + 1][j + p][B[l]],
                1ll * f[i][j][A[l]] * com[C[l] - D[l]][p - D[l]] % 1000000007);
  printf("%d\n", 1ll * f[n][k][1] * fac(k) % 1000000007);
}