#include <iostream>
using namespace std;
typedef long long ll;
ll mod=998244353;

ll fac[3000010];
 
ll modinv(ll a){
    ll b=mod,u=1,v=0;
    while(b){
        ll t=a/b;
        a-=t*b; swap(a,b);
        u-=t*v; swap(u,v);
        }
        u%=mod;
        if(u<0) u+=mod;
    return u;
}
 
void modfac(){
    fac[0]=1;
    for(ll i=1;i<3000010;i++){
        fac[i]=(fac[i-1]*i)%mod;
    }
}
 
ll modperm(ll n,ll k){
    if(n<0||k<0||n<k) return 0;
    else return (fac[n]*modinv(fac[n-k]))%mod;
}
 
ll modcomb(ll n,ll k){
    if(n<0||k<0||n<k) return 0;
    else return ((fac[n]*modinv(fac[k]))%mod*modinv(fac[n-k]))%mod;
}

ll modhom(ll n,ll k){
  if(n==0&&k==0) return 1;
  else if(n<0||k<0) return 0;
  else return modcomb(n+k-1,k);
}
 
ll modpow(ll a,ll b){
  ll ans=1;
  a%=mod;
  while(b){
    if(b&1) ans=ans*a%mod;
    a=a*a%mod;
    b>>=1;
  }
  return ans;
}

int main(){
  modfac();
  ll n,m;
  cin >> n >> m;
  ll ans=modhom(n,3*m);
  for(ll i=0;i<m;i++){
    ans=(ans-n*modhom(n-1,i)%mod+mod)%mod;
  }
  for(ll i=m+1;i<=n;i++){
    if((3*m-i)%2==0){
      ans=(ans-modcomb(n,i)*modhom(n,(3*m-i)/2)%mod+mod)%mod;
    }
  }
  cout << ans << endl;
}