#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int mod = 998244353;
const int N = 2e7 + 11;
int fac[N], inv[N], n, m;
inline LL A(LL x, LL y){
    return x + y - (x + y >= mod ? mod : 0);
}
int C(int m, int n){
    if(m > n)return 0;
    return 1LL * fac[n] * inv[m] % mod * inv[n-m] % mod;
}
LL f(int n, int m, int k){
    LL ans = 0;
    for(int i = m % 2;i <= k; i += 2){
        ans = A(ans, 1LL * C(i, n) * C(n - 1, (m - i) / 2 + n - 1) % mod);
    }
    return ans;
}
int main(){
    cin>>n>>m;
    inv[0] = inv[1] = fac[1] = fac[0] = 1;
    for(int i = 2;i < N; i++){
        fac[i] = 1LL * fac[i-1] * i % mod;
        inv[i] = (mod - 1LL * (mod / i) * inv[mod%i] % mod) % mod;
    }
    for(int i = 2;i < N; i++){
        inv[i] = 1LL * inv[i] * inv[i-1] % mod;
    }
    LL ans = A(f(n, 3 * m, m), mod - 1LL * n * (A(f(n, m, m), mod - f(n - 1, m, m))) % mod);
    cout<<ans<<endl;
    return 0;
}
