import java.util.Scanner;
public class Main {
static long[] f = new long[105];
static void binarySearch(long x) {
int l = 1, r = f.length - 3;
int mid = 0;
while (l <= r) {
mid = l + (r - l) / 2;
if (f[mid] >= x) {
r = mid - 1;
} else {
l = mid + 1;
}
}
//比较|f[mid] - x|,|f[mid - 1] - x|,f[mid + 1] - x|哪个最小
long a = Math.abs(f[mid] - x);
long b = Math.abs(f[mid + 1] - x);
long c = Math.abs(f[mid - 1] - x);
if (a > b) {
//看b,c
if (b > c) {
System.out.println(mid - 1);
} else {
System.out.println(mid + 1);
}
} else {
//看a,c
if (a > c) {
System.out.println(mid - 1);
} else {
System.out.println(mid);
}
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
f[1] = 1;
f[2] = 1;
int n = 85;
for (int i = 3; i <= n; i++) {
f[i] = f[i - 1] + f[i - 2];
}
int t = in.nextInt();
while (t-- > 0) {
long a = in.nextLong();
binarySearch(a);
}
}
}