#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
int h, w;
long long f[3001][3001];
long long a, b, res;
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> h >> w;
    f[0][0] = 1;
    for (int i = 1; i <= 3e3; ++i)
    {
        f[i][0] = 1;
    }
    for (int i = 1; i <= h; ++i)
    {
        for (int j = 1; j <= w; ++j)        
        {
            a = h - i + 1;
            b = w - j + 1;
            f[i][j] = (f[i - 1][j] + f[i - 1][j - 1] * 4 * b) % mod;
            if (1 < i)
            {
                (f[i][j] += f[i - 2][j - 1] * (i - 1) * b) %= mod;
            }
            if (1 < j)
            {
                b = w - j + 2;
                (f[i][j] += f[i - 1][j - 2] * b * (b - 1) / 2) %= mod;
            }
        }
    }
    for (int i = 1; i <= w; ++i)
    {
        (res += f[h][i]) %= mod;
    }
    cout << res;
    return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |