#include <bits/stdc++.h>
using namespace std;
inline long double min(long double a, long double b) {
  if (a < b) return a;
  return b;
}
inline long double max(long double a, long double b) {
  if (a < b) return b;
  return a;
}
int n;
long long k;
long long dp[52];
int main() {
  cin >> n >> k;
  memset(dp, 0, sizeof dp);
  dp[0] = 1;
  dp[1] = 1;
  dp[2] = 2;
  dp[3] = 3;
  for (int i = 4; i <= n; i++) {
    dp[i] = dp[i - 1] + dp[i - 2];
  }
  int start = 1;
  while (n) {
    if (k <= dp[n - 1]) {
      cout << start << " ";
      start++;
      n--;
    } else {
      k -= dp[n - 1];
      cout << start + 1 << " " << start << " ";
      start += 2;
      n -= 2;
    }
  }
  cout << endl;
  return 0;
}
