#include<cstring>
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#define ll long long
using namespace std;//往左走w-1,往下走h-1 
const ll mod=1000000007;
ll f[1000000];
ll quick(ll a,ll b)
{
//	cout<<"a"<<a<<"b"<<b<<endl;
	ll ans=1;
	while(b)
	{
		if(b&1)
		{
			ans=(ans*a)%mod;
		}
		b>>=1;
		a=(a*a)%mod;
	}
//	cout<<"("<<ans<<endl;
	return ans;
}
ll ni(ll a)
{
//	cout<<"ni"<<endl;
	return quick(a,mod-2);
}
ll c(int n,int m)
{
	ll a=f[n];
//	cout<<"a"<<f[n]<<endl;
	ll b=(f[m]*f[n-m])%mod;
//	cout<<"b"<<b<<endl;
	return (a*ni(b))%mod;
}
int main()
{
	int h,w,a,b;
	f[0]=1;
	for(int i=1;i<=200005;i++)
	{
		f[i]=(f[i-1]*i)%mod;
	}
	cin>>h>>w>>a>>b;
	ll ans=0;
	ll t;
	for(int i=b+1;i<=w;i++)
	{
	//	cout<<"-----"<<endl; 
	//	cout<<"!"<<c(h-a-1+i-1,h-a-1)<<endl;
	//	cout<<"!"<<c(w-i+a-1,a-1)<<endl;
		t=(c(h-a-1+i-1,h-a-1)*c(w-i+a-1,a-1))%mod;
		ans=(ans+t)%mod;
	}
	cout<<ans<<endl;
}
#include<bits/stdc++.h>
#define reg register
#define F(i,j,k) for(reg int i=j;i<=k;++i)
#define dF(i,j,k) for(reg int i=j;i>=k;--i)
using namespace std;
typedef long long ll;
int n,k;
const int mod=998244353;
const int MN=2005;
int C[MN<<1][MN<<1],pw[MN<<1];
inline ll solve(int i,int n){
	reg int k2=min(k-i/2,(i-1)/2);reg int k1=k-(k2<<1)-((i&1)==0);
	reg ll res=0,pos=1;
	for(reg int j=k2;j+k1>0&&j>=0;j--,pos*=-1)
		res+=pos*C[j+k1+n-1][j+k1-1]*pw[j]%mod*C[k2][j]%mod,
		res%=mod;
	return (res+mod)%mod;
}
int main(){
	cin>>k>>n;C[0][0]=1;pw[0]=1;
	F(i,1,4000){
		C[i][0]=1;pw[i]=(pw[i-1]+pw[i-1])%mod;F(j,1,i)C[i][j]=(C[i-1][j-1]+C[i-1][j])%mod;
	}
	reg ll ans=0;
	F(i,2,k<<1){
		if(~i&1)ans=(solve(i,n)+solve(i,n-1))%mod;
		else ans=solve(i,n);
		printf("%lld\n",ans);
	}
	return 0;
}