#include<bits/stdc++.h>

#define For(i,j,k)  for(int i=j;i<=k;++i)

#define Dow(i,j,k)  for(int i=k;i>=j;--i)

#define ll long long

#define pb push_back

#define fir first

#define sec second

#define pb push_back

#define pa pair<int,int>

#define mk make_pair

 

using namespace std;

 

inline ll read()

{

    ll t=0,dp=1;char c=getchar();

    while(!isdigit(c))  {if(c=='-') dp=-1;c=getchar();}

    while(isdigit(c))   t=t*10+c-48,c=getchar();

    return t*dp;

}

inline void write(ll x){if(x<0)  {putchar('-');x=-x;}    if(x>=10)    write(x/10);putchar(x%10+48);}

inline void writeln(ll x){write(x);puts("");}

inline void write_p(ll x){write(x);putchar(' ');}

const int N=3005;

int n,k;

int dp[N][N],sum[N][N],mo=998244353;;

int main()

{

	n=read();k=read();	if(n==k)	{cout<<1<<endl;return 0;}

	For(i,1,k)	dp[i][i]=sum[i][i]=1;

	For(i,1,k)	For(j,1,i)	sum[i][j]=1;

	For(i,1,n-k)

	{

		Dow(j,1,i-1)

		{

			dp[i][j]=sum[i-j][(j+1)/2];

			

			sum[i][j]=(sum[i][j+1]+dp[i][j])%mo;

		}

	}

	int ans=0;

	For(j,1,n-k)	ans=(ans+dp[n-k][j])%mo;

	writeln(ans);

}
#include <cstdio>
#include <algorithm>

typedef long long LL;
const int Mod = 998244353;
const int MN = 3005;

int N, K, f[MN][MN];

int main() {
	scanf("%d%d", &N, &K), N -= K;
	f[0][0] = 1;
	for (int i = 1; i <= N; ++i) {
		f[i][0] = 0;
		for (int j = 1; j <= i; ++j)
			f[i][j] = (f[i][j - 1] + f[i - j][std::min(i - j, 2 * j)]) % Mod;
	}
	printf("%d\n", f[N][std::min(N, K)]);
	return 0;
}