#include <bits/stdc++.h>
template <class T>
inline T qmin(T a, T b) {
  return a < b ? a : b;
}
template <class T>
inline T qmax(T a, T b) {
  return a > b ? a : b;
}
const double eps = 1e-9;
const double PI = acos(-1);
const int inf = 0x3f3f3f3f;
const int mod = (int)1e9 + 7;
const int maxn = (int)1e5 + 5;
const int maxd = (int)1e6 + 5;
const long long INF = 0x3f3f3f3f3f3f3f3f;
using namespace std;
void add(long long &x, long long y) {
  x += y;
  if (x >= mod) x -= mod;
}
long long dp[151][151][151][4];
long long sum[151][151][4];
long long n, m;
long long getsum(long long x1, long long y1, long long x2, long long y2,
                 long long l) {
  long long ret = sum[x2][y2][l] + sum[x1 - 1][y1 - 1][l] - sum[x1 - 1][y2][l] -
                  sum[x2][y1 - 1][l];
  while (ret < 0) ret += mod;
  while (ret >= mod) ret -= mod;
  return ret;
}
int32_t main() {
  scanf("%lld %lld", &n, &m);
  long long ans = 0;
  for (__typeof(n) i = 1; i <= (n); i++) {
    for (__typeof(m) l = 1; l <= (m); l++)
      for (__typeof(m) r = l; r <= (m); r++) dp[i][l][r][0] = 1;
    for (__typeof(m) l = 1; l <= (m); l++) {
      for (__typeof(m) r = l; r <= (m); r++) {
        add(dp[i][l][r][0], getsum(l, l, r, r, 0));
        add(dp[i][l][r][1], getsum(l, r + 1, r, m, 0));
        add(dp[i][l][r][1], getsum(l, r, r, m, 1));
        add(dp[i][l][r][2], getsum(1, l, l - 1, r, 0));
        add(dp[i][l][r][2], getsum(1, l, l, r, 2));
        add(dp[i][l][r][3], getsum(1, r + 1, l - 1, m, 0));
        add(dp[i][l][r][3], getsum(1, r, l - 1, m, 1));
        add(dp[i][l][r][3], getsum(1, r + 1, l, m, 2));
        add(dp[i][l][r][3], getsum(1, r, l, m, 3));
      }
    }
    for (__typeof(m) j = 1; j <= (m); j++)
      for (__typeof(m) k = j; k <= (m); k++)
        for (__typeof(3) l = 0; l <= (3); l++) add(ans, dp[i][j][k][l]);
    for (__typeof(3) l = 0; l <= (3); l++) {
      for (__typeof(m) j = 1; j <= (m); j++)
        for (__typeof(m) k = 1; k <= (m); k++) {
          sum[j][k][l] = (sum[j - 1][k][l] + sum[j][k - 1][l] -
                          sum[j - 1][k - 1][l] + dp[i][j][k][l] + mod) %
                         mod;
        }
    }
  }
  printf("%lld\n", ans);
  return 0;
}
