func_code_string: #include <bits/stdc++.h>   using namespace std;   #define fore(i, a, b) for(int i = a; i <= b; i++)   #define Fore(i, a, b) for(int i = a; i < b; i++)   #define pii pair<int, int>   #define fi first   #define se second   #define MP make_pair   #define EP emplace_back   #define li long long      const int MAXN = 2100, mod = 998244353;      inline int input(){       char c = getchar(); int o; bool f = 0;       while(c > 57 || c < 48)           f |= (c ==  - ), c = getchar();       for(o = 0; c > 47 && c < 58; c = getchar())           o = (o << 1)+(o << 3)+(c - 48);       return f ? -o : o;   }      li C[MAXN * 2][MAXN * 2];      int main(){       int n = input(), m = input();       li ans = 0;       C[0][0] = 1;       fore(i, 1, n + m){           C[i][0] = 1;           fore(j, 1, i)               C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % mod;               // cout << C[i][j] <<    n [j == i];       }       Fore(r, 1, n){           li F = 0;           for(int c = m - 1; c >= 1; c--){               F = (F + C[n - r + m - c - 1][n - r] * C[n - r - 1 + c][n - r - 1] % mod) % mod;               ans = (ans + F * (C[r + c - 1][r] * C[r + m - c - 1][r - 1] % mod) % mod) % mod;           }       }       swap(n, m);       Fore(r, 1, n){           li F = 0;           for(int c = m - 1; c >= 1; c--){               ans = (ans + F * (C[r + c - 1][r] * C[r + m - c - 1][r - 1] % mod) % mod) % mod;               F = (F + C[n - r + m - c - 1][n - r] * C[n - r - 1 + c][n - r - 1] % mod) % mod;           }       }       printf( %lld , (ans << 1) % mod);   }