#include <bits/stdc++.h>
#include <bitset>
#include <string>
using namespace std;
typedef long long ll;
ll alijonot(ll luku, ll pituus) {
set<ll> jonot;
jonot.insert(1);
ll potenssi = pow(2, pituus - 1);
for (ll i = 0; i < pituus; i++) {
int a = 0;
if (luku >= potenssi) a = 1;
set<ll>::iterator it;
set<ll> uudetJonot;
for (it = jonot.begin(); it != jonot.end(); ++it) {
ll jono = *it;
uudetJonot.insert(2 * jono + a);
}
jonot.insert(uudetJonot.begin(), uudetJonot.end());
luku %= potenssi;
potenssi /= 2;
}
return jonot.size() - 1;
}
int main() {
ios_base::sync_with_stdio(false);
ll tavoite;
cin >> tavoite;
ll pituus = 1;
ll summa = 1;
ll a = 1;
ll b = 1;
while (summa < tavoite) {
pituus++;
ll c = a;
a += b;
b = c;
summa += a:
}
ll alku = pow(2, pituus - 1);
ll loppu = 2*alku;
set<string> kaytetyt;
while (true) {
int mod = (alku + 1) % 3;
for (ll i = alku; i < loppu; i++) {
if (tavoite % 2 == 0) {
if (i % 3 != mod) {
continue;
}
} else if (i % 3 == mod) {
continue;
}
if (alijonot(i, pituus) == tavoite) {
string jono = bitset<29>(i).to_string();
jono.erase(0, 29 - pituus);
cout << jono << endl;
return 0;
}
/*
string jono = bitset<29>(i).to_string();
jono.erase(0, 29 - pituus);
if (kaytetyt.count(jono) != 0) {
continue;
}
if (alijonot(jono) == tavoite) {
cout << jono << endl;
return 0;
}
if (i % 2 != 0) {
reverse(jono.begin(),jono.end());
kaytetyt.insert(jono);
} else {
jono = bitset<29>(loppu-1-i).to_string();
jono.erase(0, 29-pituus);
reverse(jono.begin(),jono.end());
kaytetyt.insert(jono);
}
*/
}
alku = loppu;
loppu *= 2;
pituus += 1;
}
}