#include <bits/stdc++.h>
using namespace std;
double const EPS = 1e-12, PI = acos(-1);
const int N = 2e3 + 9, M = 1e6 + 9, OO = 1e9 + 7, MOD = 1e9 + 7,
          MOD2 = 998244353;
const long long INF = 2e18;
int mem[N][N][3][3], n, k;
int add(long long x, int y) {
  x += y;
  while (x >= MOD2) x -= MOD2;
  while (x < 0) x += MOD2;
  return x;
}
int solve(int idx, int connected, int prv1, int prv2) {
  if (idx + 1 == n) return connected == k;
  if (connected > k) return 0;
  int& ret = mem[idx][connected][prv1][prv2];
  if (~ret) return ret;
  ret = 0;
  for (int i = 0; i < 2; ++i) {
    bool can = (prv1 != i) && (prv2 != i);
    ret = add(ret, solve(idx + 1, connected + can, i, i));
  }
  for (int i = 0; i < 2; ++i) {
    int cur = !(i % 2);
    int cnt = (prv1 != i) + (prv2 != cur);
    ret = add(ret, solve(idx + 1, connected + cnt, i, cur));
  }
  return ret;
}
int main() {
  cout << fixed << setprecision(12), ios::sync_with_stdio(false),
      cin.tie(nullptr), cout.tie(nullptr);
  cin >> n >> k;
  memset(mem, -1, sizeof mem);
  cout << add(add(solve(0, 1, 0, 0), solve(0, 1, 1, 1)),
              add(solve(0, 2, 1, 0), solve(0, 2, 0, 1)));
  return 0;
}
