#include <bits/stdc++.h>
long long read() {
  long long x = 0;
  int zf = 1;
  char ch = ' ';
  while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
  if (ch == '-') zf = -1, ch = getchar();
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  return x * zf;
}
int n;
long long f[60];
void DFS(int flr, long long k) {
  if (flr > n) return;
  if (k > f[n - flr]) {
    printf("%d %d ", flr + 1, flr);
    DFS(flr + 2, k - f[n - flr]);
    k -= f[n - flr];
    return;
  } else {
    printf("%d ", flr);
    DFS(flr + 1, k);
  }
}
int main() {
  n = read();
  long long k = read();
  f[0] = f[1] = 1;
  for (int i = 1; i <= 55; ++i) f[i] = f[i - 1] + f[i - 2];
  DFS(1, k);
  return 0;
}
