#include <algorithm>
#include <bitset>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>

#define isNum(a) (a >= '0' && a <= '9')
#define SP putchar(' ')
#define EL putchar('\n')
#define File(a) freopen(a ".in", "r", stdin), freopen(a ".out", "w", stdout)

template <class T>
void read(T &);
template <class T>
void write(const T &);

typedef long long ll;
typedef unsigned long long ull;
typedef const long long &cll;
typedef const int &ci;
typedef std::pair<int, int> pii;
const int iinf = 2147483647;
const ll llinf = 9223372036854775807ll;
using std::abs;
using std::max;
using std::min;

constexpr int N = 3005;
constexpr int Mod = 998244353;

void add(int &a, int b) { (a += b) >= Mod ? a -= Mod : a; }

int dp[N][N];
int n, k;

int main() {
  read(n), read(k);
  dp[0][0] = 1;
  for (int j = 1; j <= n; ++j) {
    for (int i = 1; i <= j; ++i) {
      dp[i][j] = dp[i - 1][j - 1];
      if (2 * i <= j - i) {
        add(dp[i][j], dp[2 * i][j - i]);
      }
      if (2 * i - 1 <= j - i) {
        add(dp[i][j], dp[2 * i - 1][j - i]);
      }
    }
  }
  int ans = 0;
  for (int i = 0; i <= k; ++i) {
    add(ans, dp[i][n - k]);
  }
  write(ans), EL;
  return 0;
}

template <class T>
inline void read(T &Re) {
  T k = 0;
  char ch = getchar();
  int flag = 1;
  while (!isNum(ch)) {
    if (ch == '-') {
      flag = -1;
    }
    ch = getchar();
  }
  while (isNum(ch)) {
    k = (k << 1) + (k << 3) + ch - '0';
    ch = getchar();
  }
  Re = flag * k;
}
template <class T>
inline void write(const T &Wr) {
  if (Wr < 0) {
    putchar('-');
    write(-Wr);
  } else {
    if (Wr < 10) {
      putchar(Wr + '0');
    } else {
      write(Wr / 10);
      putchar((Wr % 10) + '0');
    }
  }
}

#include <bits/stdc++.h>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
int main() {
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    int n, k;
    cin >> n >> k;
    const int mod = 998244353;
    vector<int> dp(1, 1);
    for (int i = 1; i < n; i++) {
        vector<int> temp(i + 1, 0);
        for (int j = i; j >= 0; j--) {
            if (j > 0) {
                temp[j] = dp[j - 1];
            }
            if (2 * j < i) {
                temp[j] += temp[2 * j + 1];
            }
            temp[j] = temp[j] % mod;
            //cout << i << j << temp[j] << endl;
        }
        dp = temp;
    }
    cout << dp[k - 1] << endl;
    return 0;
}