#include <bits/stdc++.h>
using namespace std;
int n, m, ans, sum, f[155][155][2][2];
void inc(int &a, int &b) {
  a += b;
  if (a >= 1000000007) a -= 1000000007;
}
int main() {
  int i, j, h;
  scanf("%d %d", &n, &m);
  for (i = 1; i <= m; i++)
    for (j = i; j <= m; j++) f[i][j][0][0] = 1;
  for (h = 1; h <= n; h++) {
    sum = 0;
    for (i = 1; i <= m; i++)
      for (j = i; j <= m; j++) {
        inc(sum, f[i][j][0][0]);
        inc(sum, f[i][j][0][1]);
        inc(sum, f[i][j][1][0]);
        inc(sum, f[i][j][1][1]);
      }
    (ans += 1LL * (n - h + 1) * sum % 1000000007) %= 1000000007;
    for (j = 1; j <= m; j++)
      for (i = 1; i < j; i++) {
        inc(f[i + 1][j][1][0], f[i][j][0][0]);
        inc(f[i + 1][j][1][0], f[i][j][1][0]);
        inc(f[i + 1][j][1][1], f[i][j][0][1]);
        inc(f[i + 1][j][1][1], f[i][j][1][1]);
      }
    for (i = 1; i <= m; i++)
      for (j = m; j > i; j--) {
        inc(f[i][j - 1][0][1], f[i][j][0][0]);
        inc(f[i][j - 1][0][1], f[i][j][0][1]);
        inc(f[i][j - 1][1][1], f[i][j][1][0]);
        inc(f[i][j - 1][1][1], f[i][j][1][1]);
      }
    for (j = 1; j <= m; j++)
      for (i = j; i > 1; i--) {
        inc(f[i - 1][j][0][0], f[i][j][0][0]);
        inc(f[i - 1][j][0][1], f[i][j][0][1]);
      }
    for (i = 1; i <= m; i++)
      for (j = i; j < m; j++) {
        inc(f[i][j + 1][0][0], f[i][j][0][0]);
        inc(f[i][j + 1][1][0], f[i][j][1][0]);
      }
  }
  cout << ans;
  return 0;
}
