#include<bits/stdc++.h>
using namespace std;
#define ios ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define scn(n) scanf("%d",&n)
#define lscn(n) scanf("%lld",&n)
#define rep(i,st,n) for(int i=st;i<n;i++)
typedef long long ll;
#define pri(n) printf("%d\n",n)
#define lpri(n) printf("%lld\n",n)
#define var(n) int n; scn(n)
#define F first
#define S second
#define all(x) (x).begin(),(x).end()
#define pb(n) push_back(n)
#define pii  pair<int,int>
const int N=3e3+6;
const ll M = 998244353;

ll dp[N][N];
// dp[i][j] is the number of ways with i 
// elements and j sum.
int main()
{
	int n,k;
	cin>>n>>k;
	dp[0][0] = 1;
	for(int i = 1;i<=n;i++)
	{
		for(int sum = 1;sum<=i;sum++)
		{
			ll req = sum;
			while(req<=i)
			{
				dp[i][sum] += dp[i-1][req-1];
				if(dp[i][sum]>=M)
					dp[i][sum]-=M;
				req*=2;
			}
		}
	}
	
	lpri(dp[n][k]);
}
#include<bits/stdc++.h>
#define PI 3.141592653589793238462
#define eps 1e-10
using namespace std;
typedef long long ll;
typedef long double db;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<db,db> pdd;
ll d[3005][3005],mod=998244353;
ll dfs(ll n,ll k){
    if(n<k) return 0;
    if(k==0) return !n;
    if(d[n][k]!=-1) return d[n][k];
    d[n][k]=(dfs(n-1,k-1)+dfs(n,k<<1))%mod;
    return d[n][k]%mod;
}
int main(){
    memset(d,-1,sizeof(d));
    ll n,k;cin>>n>>k;dfs(n,k);
    cout<<dfs(n,k)%mod<<endl;
}
