#include <bits/stdc++.h>   using namespace std;   const int N = 160;   const int mod = 1e9 + 7;   int n, m, f[N][N][2][2], ans;   void inc(int& a, int b) {     if (a += b, a >= mod) a -= mod;   }   int main() {     scanf( %d %d , &n, &m);     for (int i = 1; i <= m; ++i)       for (int j = i; j <= m; ++j) {         f[i][j][1][1] = 1;       }     for (int h = 1; h <= n; ++h) {       int tot = 0;       for (int i = 1; i <= m; ++i)         for (int j = 1; j <= m; ++j)           for (int kl = 0; kl <= 1; ++kl)             for (int kr = 0; kr <= 1; ++kr) {               inc(tot, f[i][j][kl][kr]);             }       inc(ans, (long long)tot * (n + 1 - h) % mod);       if (h == n) break;       for (int j = 1; j <= m; ++j)         for (int i = 1; i < j; ++i)           for (int kr = 0; kr <= 1; ++kr) {             inc(f[i + 1][j][0][kr], (f[i][j][0][kr] + f[i][j][1][kr]) % mod);           }       for (int i = 1; i <= m; ++i)         for (int j = m; j > i; --j)           for (int kl = 0; kl <= 1; ++kl) {             inc(f[i][j - 1][kl][0], (f[i][j][kl][0] + f[i][j][kl][1]) % mod);           }       for (int j = 2; j <= m; ++j)         for (int i = j; i > 1; --i)           for (int kr = 0; kr <= 1; ++kr) {             inc(f[i - 1][j][1][kr], f[i][j][1][kr]);           }       for (int i = 1; i <= m - 1; ++i)         for (int j = i; j < m; ++j)           for (int kl = 0; kl <= 1; ++kl) {             inc(f[i][j + 1][kl][1], f[i][j][kl][1]);           }     }     printf( %d n , ans);   }   