#include <bits/stdc++.h>
using namespace std;
int N, M;
long long f[155][155][155][2][2], g[155][155][2][2];
void doit() {
  scanf("%d %d", &N, &M);
  int ans = 0;
  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] = i == 1
                               ? 1
                               : (g[k][k][0][0] - g[j - 1][k][0][0] -
                                  g[k][j - 1][0][0] + g[j - 1][j - 1][0][0]) %
                                     1000000007;
        f[i][j][k][0][1] =
            ((g[k][M][0][0] - g[j - 1][M][0][0] - g[k][k + 1 - 1][0][0] +
              g[j - 1][k + 1 - 1][0][0]) %
                 1000000007 +
             (g[k][M][0][1] - g[j - 1][M][0][1] - g[k][k - 1][0][1] +
              g[j - 1][k - 1][0][1]) %
                 1000000007) %
            1000000007;
        f[i][j][k][1][0] = ((g[j - 1][k][0][0] - g[1 - 1][k][0][0] -
                             g[j - 1][j - 1][0][0] + g[1 - 1][j - 1][0][0]) %
                                1000000007 +
                            (g[j][k][1][0] - g[1 - 1][k][1][0] -
                             g[j][j - 1][1][0] + g[1 - 1][j - 1][1][0]) %
                                1000000007) %
                           1000000007;
        f[i][j][k][1][1] =
            ((g[j - 1][M][0][0] - g[1 - 1][M][0][0] -
              g[j - 1][k + 1 - 1][0][0] + g[1 - 1][k + 1 - 1][0][0]) %
                 1000000007 +
             (g[j - 1][M][0][1] - g[1 - 1][M][0][1] - g[j - 1][k - 1][0][1] +
              g[1 - 1][k - 1][0][1]) %
                 1000000007 +
             (g[j][M][1][0] - g[1 - 1][M][1][0] - g[j][k + 1 - 1][1][0] +
              g[1 - 1][k + 1 - 1][1][0]) %
                 1000000007 +
             (g[j][M][1][1] - g[1 - 1][M][1][1] - g[j][k - 1][1][1] +
              g[1 - 1][k - 1][1][1]) %
                 1000000007) %
            1000000007;
      }
    for (int j = 1; j <= M; j++)
      for (int k = 1; k <= M; k++)
        for (int x = 0; x < 4; x++)
          g[j][k][x / 2][x & 1] =
              (f[i][j][k][x / 2][x & 1] + g[j - 1][k][x / 2][x & 1] +
               g[j][k - 1][x / 2][x & 1] - g[j - 1][k - 1][x / 2][x & 1]) %
              1000000007;
    for (int x = 0; x < 4; x++)
      (ans += g[M][M][x / 2][x & 1] * (N - i + 1) % 1000000007) %= 1000000007;
  }
  cout << (ans + 1000000007) % 1000000007 << endl;
}
int main() {
  doit();
  return 0;
}
