#include<bits/stdc++.h> using std::vector; #define int long long typedef vector<int> vi; typedeflonglong ll; constint Mod=998244353; template<typename Tp=int>inline Tp read(){Tp x(0);intop(0);char ch=getchar();while(ch<'0'||ch>'9')op|=(ch==45),ch=getchar();while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar();return op?-x:x;}
signedmain(){ int n=read(),x=abs(read()),y=abs(read()),z=abs(read()); if(n<x+y+z||(n-x-y-z)%2!=0)returnputs("0"),0; int w=(n-x-y-z)/2; auto ksm=[](int x,int y){ int ans=1; for(;y;y>>=1,x=x*x%Mod)if(y&1)ans=ans*x%Mod; return ans; }; vi fac(n+1),inv(n+1); fac[0]=fac[1]=1; for(int i=2;i<=n;++i)fac[i]=fac[i-1]*i%Mod; inv[n]=ksm(fac[n],Mod-2); for(int i=n-1;~i;--i)inv[i]=inv[i+1]*(i+1)%Mod; auto C=[fac,inv](int x,int y){return x>=0&&y>=0&&x>=y?fac[x]*inv[y]%Mod*inv[x-y]%Mod:0;}; int ans=0; for(int i=0;i<=w;++i){ int W=fac[n-x-2*i]*inv[z+w-i]%Mod*inv[w-i+y]%Mod*C(2*w-2*i+y+z,w-i)%Mod; (ans+=W*C(n,x+2*i)%Mod*C(x+2*i,i)%Mod)%=Mod; } printf("%lld\n",ans); return0; }