#include <bits/stdc++.h>
const int N = 159, MOD = (int)(1e9) + 7;
int sum[N][N][4], f[N][N][N][4], n, m, test;
inline int SUM(const int i1, const int i2, const int j1, const int j2,
               const int k) {
  return ((long long)sum[i2][j2][k] - sum[i1 - 1][j2][k] - sum[i2][j1 - 1][k] +
          sum[i1 - 1][j1 - 1][k]) %
         MOD;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; ++i)
    for (int j = i; j <= n; ++j) f[1][i][j][0] = 1;
  for (int i = 2; i <= m; ++i) {
    test = i;
    for (int j = 1; j <= n; ++j)
      for (int k = 1; k <= n; ++k) {
        int *F = f[i - 1][j][k];
        sum[j][k][0] = ((long long)sum[j - 1][k][0] + sum[j][k - 1][0] -
                        sum[j - 1][k - 1][0] + F[0]) %
                       MOD;
        sum[j][k][1] = ((long long)sum[j - 1][k][1] + sum[j][k - 1][1] -
                        sum[j - 1][k - 1][1] + F[1]) %
                       MOD;
        sum[j][k][2] = ((long long)sum[j - 1][k][2] + sum[j][k - 1][2] -
                        sum[j - 1][k - 1][2] + F[2]) %
                       MOD;
        sum[j][k][3] = ((long long)sum[j - 1][k][3] + sum[j][k - 1][3] -
                        sum[j - 1][k - 1][3] + F[3]) %
                       MOD;
      }
    for (int j = 1; j <= n; ++j)
      for (int k = j; k <= n; ++k) {
        int *F = f[i][j][k];
        F[0] = SUM(j, k, j, k, 0) + 1;
        F[1] = ((long long)SUM(1, j - 1, j, k, 0) + SUM(1, j - 1, j, k, 1) +
                SUM(j, j, j, k, 1)) %
               MOD;
        F[2] = ((long long)SUM(j, k, k + 1, n, 0) + SUM(j, k, k + 1, n, 2) +
                SUM(j, k, k, k, 2)) %
               MOD;
        F[3] = ((long long)SUM(1, j - 1, k + 1, n, 3) +
                SUM(1, j - 1, k + 1, n, 2) + SUM(1, j - 1, k + 1, n, 1) +
                SUM(1, j - 1, k + 1, n, 0) + SUM(j, j, k + 1, n, 3) +
                SUM(j, j, k + 1, n, 1) + SUM(1, j - 1, k, k, 3) +
                SUM(1, j - 1, k, k, 2) + SUM(j, j, k, k, 3)) %
               MOD;
      }
  }
  int ans = 0;
  for (int k = 1; k <= m; ++k)
    for (int i = 1; i <= n; ++i)
      for (int j = i; j <= n; ++j)
        ans = ((long long)ans + f[k][i][j][0] + f[k][i][j][1] + f[k][i][j][2] +
               f[k][i][j][3]) %
              MOD;
  if (ans < 0) ans += MOD;
  printf("%d\n", ans);
}
