#include <bits/stdc++.h>
using namespace std;
int n, m;
long long g[200][200], f[155][155][155][2][2];
void add_j(int c) {
  if (!c) {
    for (int j = 1; j <= m; ++j)
      for (int k = 1; k <= m; ++k)
        g[j][k] = (g[j][k] + g[j - 1][k]) % 1000000007;
  } else {
    for (int j = m; j; --j)
      for (int k = 1; k <= m; ++k)
        g[j][k] = (g[j][k] + g[j + 1][k]) % 1000000007;
  }
}
void add_k(int c) {
  if (!c) {
    for (int j = 1; j <= m; ++j)
      for (int k = 1; k <= m; ++k)
        g[j][k] = (g[j][k] + g[j][k - 1]) % 1000000007;
  } else {
    for (int j = 1; j <= m; ++j)
      for (int k = m; k; --k) g[j][k] = (g[j][k] + g[j][k + 1]) % 1000000007;
  }
}
int main() {
  scanf("%d%d", &n, &m);
  memset(f, 0, sizeof(f));
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k) f[i][j][k][0][0] = 1;
  long long ans = 0;
  for (int j = 1; j <= m; ++j)
    for (int k = j; k <= m; ++k) ans = (ans + f[1][j][k][0][0]) % 1000000007;
  for (int i = 2; i <= n; ++i) {
    memset(g, 0, sizeof(g));
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k) g[j][k] = f[i - 1][j][k][0][0];
    add_j(1), add_k(0);
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k)
        f[i][j][k][0][0] = (f[i][j][k][0][0] + g[j][k]) % 1000000007;
    memset(g, 0, sizeof(g));
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k) g[j][k] = f[i - 1][j][k][0][0];
    add_j(1), add_k(1);
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k)
        f[i][j][k][0][1] =
            (f[i][j][k][0][1] + g[j][k + 1] - g[k + 1][k + 1] + 1000000007) %
            1000000007;
    memset(g, 0, sizeof(g));
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k) g[j][k] = f[i - 1][j][k][0][1];
    add_j(1), add_k(1);
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k)
        f[i][j][k][0][1] =
            (f[i][j][k][0][1] + g[j][k] - g[k + 1][k + 1] + 1000000007) %
            1000000007;
    memset(g, 0, sizeof(g));
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k) g[j][k] = f[i - 1][j][k][0][0];
    add_j(0), add_k(0);
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k)
        f[i][j][k][1][0] =
            (f[i][j][k][1][0] + g[j - 1][k] - g[j - 1][j - 1] + 1000000007) %
            1000000007;
    memset(g, 0, sizeof(g));
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k) g[j][k] = f[i - 1][j][k][1][0];
    add_j(0), add_k(0);
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k)
        f[i][j][k][1][0] =
            (f[i][j][k][1][0] + g[j][k] - g[j - 1][j - 1] + 1000000007) %
            1000000007;
    memset(g, 0, sizeof(g));
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k) g[j][k] = f[i - 1][j][k][0][0];
    add_j(0), add_k(1);
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k)
        f[i][j][k][1][1] = (f[i][j][k][1][1] + g[j - 1][k + 1]) % 1000000007;
    memset(g, 0, sizeof(g));
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k) g[j][k] = f[i - 1][j][k][1][0];
    add_j(0), add_k(1);
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k)
        f[i][j][k][1][1] = (f[i][j][k][1][1] + g[j][k + 1]) % 1000000007;
    memset(g, 0, sizeof(g));
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k) g[j][k] = f[i - 1][j][k][0][1];
    add_j(0), add_k(1);
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k)
        f[i][j][k][1][1] = (f[i][j][k][1][1] + g[j - 1][k]) % 1000000007;
    memset(g, 0, sizeof(g));
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k) g[j][k] = f[i - 1][j][k][1][1];
    add_j(0), add_k(1);
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k)
        f[i][j][k][1][1] = (f[i][j][k][1][1] + g[j][k]) % 1000000007;
    for (int j = 1; j <= m; ++j)
      for (int k = j; k <= m; ++k)
        ans = (ans + f[i][j][k][0][0] + f[i][j][k][0][1] + f[i][j][k][1][0] +
               f[i][j][k][1][1]) %
              1000000007;
  }
  printf("%lld", ans);
  return 0;
}
