#include <bits/stdc++.h>
using namespace std;
int a[100];
int b[100];
bool flag[100];
long long fib[100] = {1, 1};
int n;
long long k;
vector<int> ans;
void dfs(int s, int temp) {
  if (s == 1)
    ans.push_back(temp);
  else {
    if (k < fib[s - 1]) {
      ans.push_back(temp);
      dfs(s - 1, temp + 1);
      return;
    } else
      k -= fib[s - 1];
    if (k < fib[s - 2]) {
      ans.push_back(temp + 1);
      ans.push_back(temp);
      dfs(s - 2, temp + 2);
      return;
    } else
      k -= fib[s - 2];
  }
}
int main() {
  for (int i = 2; i <= 50; ++i) fib[i] = fib[i - 1] + fib[i - 2];
  while (~scanf("%d%I64d", &n, &k)) {
    ans.clear();
    k--;
    dfs(n, 1);
    for (int i = 0; i < n; ++i) printf("%d%c", ans[i], " \n"[i == n - 1]);
  }
}
