#include <bits/stdc++.h>
using namespace std;
int f[2][2][160][160], s[2][2][160][160], n, m, ans;
void upd(int &x, int y) {
  y = (y % 1000000007 + 1000000007) % 1000000007;
  x = (x + y) % 1000000007;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int p = 1; p <= n; p++) {
    for (int j = 0; j <= 1; j++)
      for (int k = 0; k <= 1; k++)
        for (int l = 1; l <= m; l++)
          for (int r = l; r <= m; r++) {
            int t = f[j][k][l][r] = s[j][k][l][r];
            if (t) upd(ans, t);
          }
    for (int l = 1; l <= m; l++)
      for (int r = l; r <= m; r++) f[0][0][l][r]++, ans++;
    memset(s, 0, sizeof(s));
    for (int l = 1; l <= m; l++)
      for (int r = l; r <= m; r++) {
        upd(s[0][0][l][r], f[0][0][l][r]);
        if (l <= r - 1)
          upd(s[0][1][l][r - 1], f[0][0][l][r]),
              upd(s[0][1][l - 1][l - 1], -f[0][0][l][r]);
        if (l + 1 <= r)
          upd(s[1][0][l + 1][r], f[0][0][l][r]),
              upd(s[1][0][r + 1][r + 1], -f[0][0][l][r]);
        if (l + 1 <= r - 1) upd(s[1][1][l + 1][r - 1], f[0][0][l][r]);
        upd(s[0][1][l][r], f[0][1][l][r]);
        upd(s[0][1][l - 1][l - 1], -f[0][1][l][r]);
        if (l + 1 <= r) upd(s[1][1][l + 1][r], f[0][1][l][r]);
        upd(s[1][0][l][r], f[1][0][l][r]);
        upd(s[1][0][r + 1][r + 1], -f[1][0][l][r]);
        if (l <= r - 1) upd(s[1][1][l][r - 1], f[1][0][l][r]);
        upd(s[1][1][l][r], f[1][1][l][r]);
      }
    for (int i = m; i >= 1; i--)
      for (int j = 1; j <= m; j++)
        upd(s[0][0][i][j],
            s[0][0][i + 1][j] + s[0][0][i][j - 1] - s[0][0][i + 1][j - 1]);
    for (int i = m; i >= 1; i--)
      for (int j = m; j >= 1; j--)
        upd(s[0][1][i][j],
            s[0][1][i + 1][j] + s[0][1][i][j + 1] - s[0][1][i + 1][j + 1]);
    for (int i = 1; i <= m; i++)
      for (int j = 1; j <= m; j++)
        upd(s[1][0][i][j],
            s[1][0][i - 1][j] + s[1][0][i][j - 1] - s[1][0][i - 1][j - 1]);
    for (int i = 1; i <= m; i++)
      for (int j = m; j >= 1; j--)
        upd(s[1][1][i][j],
            s[1][1][i - 1][j] + s[1][1][i][j + 1] - s[1][1][i - 1][j + 1]);
  }
  printf("%d\n", ans);
  return 0;
}
