#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <map>
using namespace std;
const long long inf = 1000000000000000000LL;
vector<long long> fib;
map<long long, int> f;
int solve(long long x) {
if (f.count(x) > 0) return f[x];
int t = lower_bound(fib.begin(), fib.end(), x) - fib.begin();
if (fib[t] == x) {
f[x] = 1;
return 1;
}
int res = min(solve(fib[t] - x), solve(x - fib[t-1])) + 1;
f[x] = res;
return res;
}
int main() {
fib.push_back(1);
fib.push_back(2);
long long a = 1, b = 2;
while (true) {
long long c = a + b;
if (c > inf) break;
fib.push_back(c);
a = b;
b = c;
}
int q;
scanf("%d", &q);
for (int i = 0; i < q; i ++) {
long long x;
scanf("%lld", &x);
printf("%d\n", solve(x));
}
return 0;
}
CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxjc3RyaW5nPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBpbmYgPSAxMDAwMDAwMDAwMDAwMDAwMDAwTEw7Cgp2ZWN0b3I8bG9uZyBsb25nPiBmaWI7Cm1hcDxsb25nIGxvbmcsIGludD4gZjsKCmludCBzb2x2ZShsb25nIGxvbmcgeCkgewoJaWYgKGYuY291bnQoeCkgPiAwKSByZXR1cm4gZlt4XTsKCWludCB0ID0gbG93ZXJfYm91bmQoZmliLmJlZ2luKCksIGZpYi5lbmQoKSwgeCkgLSBmaWIuYmVnaW4oKTsKCWlmIChmaWJbdF0gPT0geCkgewoJCWZbeF0gPSAxOwoJCXJldHVybiAxOwoJfQoJaW50IHJlcyA9IG1pbihzb2x2ZShmaWJbdF0gLSB4KSwgc29sdmUoeCAtIGZpYlt0LTFdKSkgKyAxOwoJZlt4XSA9IHJlczsKCXJldHVybiByZXM7Cn0KCmludCBtYWluKCkgewoJZmliLnB1c2hfYmFjaygxKTsKCWZpYi5wdXNoX2JhY2soMik7Cglsb25nIGxvbmcgYSA9IDEsIGIgPSAyOwoJd2hpbGUgKHRydWUpIHsKCQlsb25nIGxvbmcgYyA9IGEgKyBiOwoJCWlmIChjID4gaW5mKSBicmVhazsKCQlmaWIucHVzaF9iYWNrKGMpOwoJCWEgPSBiOwoJCWIgPSBjOwoJfQoJCglpbnQgcTsKCXNjYW5mKCIlZCIsICZxKTsKCWZvciAoaW50IGkgPSAwOyBpIDwgcTsgaSArKykgewoJCWxvbmcgbG9uZyB4OwoJCXNjYW5mKCIlbGxkIiwgJngpOwoJCXByaW50ZigiJWRcbiIsIHNvbHZlKHgpKTsKCX0KCQoJcmV0dXJuIDA7Cn0K