#include <bits/stdc++.h>
using namespace std;
int n;
long long k;
long long cache[55];
const long long pp = 1e18;
long long solve(int idx) {
  if (idx == n) return 1;
  long long &ret = cache[idx];
  if (ret != -1) return ret;
  ret = 0;
  for (int i = idx, j = 0; i < n && j < 2; i++, j++) {
    ret += solve(i + 1);
    ret = min(ret, pp);
  }
  return ret;
}
vector<int> ans;
void get_ans(int idx, long long k) {
  if (idx == n) return;
  for (int i = idx, j = 0; i < n && j < 2; i++, j++) {
    if (k > solve(i + 1)) {
      k -= solve(i + 1);
    } else {
      for (int j = i; j >= idx; j--) ans.push_back(j + 1);
      get_ans(i + 1, k);
      return;
    }
  }
  assert(false);
}
int main() {
  scanf("%d%lld", &n, &k);
  memset(cache, -1, sizeof(cache));
  assert(k <= solve(0));
  get_ans(0, k);
  assert(ans.size() == n);
  for (int i = 0; i < ans.size(); i++) printf("%d ", ans[i]);
  printf("\n");
  return 0;
}
