#include <bits/stdc++.h>
#define fast ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
#define int long long
using namespace std;

const int N = 3e3 + 5;
const int mod = 998244353;
const int INF = 1e15 + 5;

int dp[N][N];

int32_t main(){
	fast;
	int n, k;
	cin >> n >> k;
	memset(dp, 0, sizeof dp);
	dp[0][0] = 1;
	for(int i=1; i<=n; i++){
		for(int j=n; j>=0; j--){
			int sum = 0;
			if(j > 0){
				sum = (sum + dp[i-1][j-1])%mod;
			}
			if(2*j <= n)
				sum = (sum + dp[i][2*j])%mod;
			dp[i][j] = sum;
		}
	}
	cout << dp[n][k] << endl;
	
}

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)

int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int A, B;
  cin >> A >> B;
  vector<int> C, D;

  int delta = 0;
  if (A > B) {
    rep(i, A) C.push_back(i + 1);
    rep(i, B - 1) D.push_back(-1 * (i + 1));
    for (int i = B; i <= A; i++)
      delta += -1 * i;
    D.push_back(delta);
  } else if (A < B) {
    rep(i, A - 1) C.push_back(i + 1);
    rep(i, B) D.push_back(-1 * (i + 1));
    for (int i = A; i <= B; i++)
      delta += i;
    C.push_back(delta);
  } else if (A == B) {
    rep(i, A) C.push_back(i + 1);
    rep(i, B) D.push_back(-1 * (i + 1));
  }

  rep(i, D.size()) cout << D.at(i) << " ";
  rep(i, C.size()) {
    cout << C.at(i);
    if (i != (int)C.size() - 1)
      cout << " ";
  }
  cout << endl;
}