#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:LonlyCoder&_Codes")
using namespace std;
const int maxn = 55;
long long f[maxn];
int n;
void go(int pos, long long k) {
  int cnt = n - pos + 1;
  if (cnt == 1) {
    printf("%d", pos);
  } else if (cnt == 2) {
    if (k == 1) {
      printf("%d %d", pos, pos + 1);
    } else {
      printf("%d %d", pos + 1, pos);
    }
  } else {
    if (f[cnt - 1] >= k) {
      printf("%d ", pos);
      go(pos + 1, k);
    } else {
      printf("%d %d ", pos + 1, pos);
      go(pos + 2, k - f[cnt - 1]);
    }
  }
}
int main() {
  f[1] = 1;
  f[2] = 2;
  for (int i = 3; i < maxn; i++) {
    f[i] = f[i - 1] + f[i - 2];
    f[i] = min(f[i], (long long)1e18 + 10);
  }
  long long k;
  scanf("%d %I64d", &n, &k);
  go(1, k);
  return 0;
}
