#include <bits/stdc++.h>
using namespace std;
const int N = 160;
int n, m, ans;
int f[N][N][N][2][2];
long long cnt;
void add(int &a, int b) {
  a += b;
  a %= 1000000007;
  a = (a + 1000000007) % 1000000007;
}
void Minus(int &a, int b) {
  a -= b;
  a %= 1000000007;
  a = (a + 1000000007) % 1000000007;
}
int main() {
  cin >> n >> m;
  for (int i = 1; i <= m; i++)
    for (int j = i; j <= m; j++) {
      f[1][i][j][0][0] = 1;
      add(ans, n);
    }
  for (int i = 2; i <= n; i++) {
    cnt = 0;
    for (int j = 1; j <= m; j++)
      for (int k = 1; k + j - 1 <= m; k++) {
        add(f[i][k][k + j - 1][0][0], f[i][k][k + j - 2][0][0]);
        add(f[i][k][k + j - 1][0][0], f[i][k + 1][k + j - 1][0][0]);
        Minus(f[i][k][k + j - 1][0][0], f[i][k + 1][k + j - 2][0][0]);
        add(f[i][k][k + j - 1][0][0], f[i - 1][k][k + j - 1][0][0]);
      }
    for (int j = m; j >= 1; j--)
      for (int k = 1; k + j - 1 <= m; k++) {
        add(f[i][k][k + j - 1][1][1], f[i][k][k + j][1][1]);
        add(f[i][k][k + j - 1][1][1], f[i][k - 1][k + j - 1][1][1]);
        Minus(f[i][k][k + j - 1][1][1], f[i][k - 1][k + j][1][1]);
        add(f[i][k][k + j - 1][1][1], f[i - 1][k][k + j - 1][1][1]);
        add(f[i][k][k + j - 1][1][1], f[i - 1][k - 1][k + j - 1][0][1]);
        add(f[i][k][k + j - 1][1][1], f[i - 1][k][k + j][1][0]);
        add(f[i][k][k + j - 1][1][1], f[i - 1][k - 1][k + j][0][0]);
      }
    for (int j = m; j >= 1; j--)
      for (int k = j; k >= 1; k--) {
        add(f[i][k][j][0][1], f[i][k + 1][j][0][1]);
        add(f[i][k][j][0][1], f[i][k][j + 1][0][1]);
        Minus(f[i][k][j][0][1], f[i][k + 1][j + 1][0][1]);
        add(f[i][k][j][0][1], f[i - 1][k][j][0][1]);
        add(f[i][k][j][0][1], f[i - 1][k][j + 1][0][0]);
      }
    for (int k = 1; k <= m; k++)
      for (int j = k; j <= m; j++) {
        add(f[i][k][j][1][0], f[i][k][j - 1][1][0]);
        add(f[i][k][j][1][0], f[i][k - 1][j][1][0]);
        Minus(f[i][k][j][1][0], f[i][k - 1][j - 1][1][0]);
        add(f[i][k][j][1][0], f[i - 1][k][j][1][0]);
        add(f[i][k][j][1][0], f[i - 1][k - 1][j][0][0]);
      }
    for (int k = 1; k <= m; k++)
      for (int j = 1; j <= m; j++)
        for (int l = 0; l <= 1; l++)
          for (int r = 0; r <= 1; r++) {
            cnt =
                (cnt + (long long)(n - i + 1) * f[i][k][j][l][r]) % 1000000007;
          }
    ans = (ans + cnt) % 1000000007;
  }
  cout << ans << endl;
  return 0;
}
