#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//tavoite: tavoiteltava summa
//lista: lisätyt luvut
//viimeinen: listan viimeinen luku
//summa: lisättävä summa jos lisätään eri luku kuin viimeinen
//kokonaisSumma: listan kokonaissumma
//raja: raja listan pituudelle (missä vaiheessa lopetetaan etsintä)
array<ll,2> lyhinjono(ll tavoite, ll arvo, ll viimeinen, ll summa, ll kokonaissumma, ll raja, ll pituus) {
if (kokonaissumma > tavoite || length >= raja) {
return {0,0};
}
if (kokonaissumma == tavoite) {
return {arvo, pituus};
}
pituus++;
//lisätään eri luku, arvo kasvaa summalla
array<ll, 2> jono1 = lyhinjono(tavoite, arvo + summa, summa, summa + viimeinen, kokonaissumma + summa, raja, pituus);
if (jono1[0] != 0) {
raja = pituus;
}
//lisätään sama luku, arvo kasvaa samalla kuin viimeksi
array<ll, 2> jono2 = lyhinjono(tavoite, arvo + summa, viimeinen, summa + viimeinen, kokonaissumma + viimeinen, raja, pituus);
if (jono2[0] != 0) {
return jono2;
}
return jono1;
}
int main() {
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;
}
array<ll, 2> jono = lyhinjono(tavoite, 1, 1, 2, 1, pituus + 2, 1);
string bittijono = bitset<30>(jono[0]).to_string();
jono.erase(0, 30 - jono[1]);
cout << jono << endl;
}