#include <bits/stdc++.h>
using namespace std;
const int max_fib = 95;
long long fib[max_fib];
long long dyn1[max_fib], dyn2[max_fib];
int A[max_fib];
long long solve(long long& n) {
  int cur_fib = 0;
  while (fib[cur_fib + 1] <= n) {
    ++cur_fib;
  }
  int m = 0;
  for (int i = cur_fib; i > 0; --i) {
    if (n >= fib[i]) {
      n -= fib[i];
      A[m++] = i;
    }
  }
  A[m] = 0;
  dyn1[m] = 1, dyn2[m] = 0;
  for (int i = m - 1; i >= 0; --i) {
    dyn1[i] = dyn1[i + 1] + dyn2[i + 1];
    dyn2[i] = (A[i] - A[i + 1] - 1) / 2 * dyn1[i + 1] +
              (A[i] - A[i + 1]) / 2 * dyn2[i + 1];
  }
  return dyn1[0] + dyn2[0];
}
int main() {
  fib[0] = fib[1] = 1;
  for (int i = 2; i < max_fib; ++i) {
    fib[i] = fib[i - 1] + fib[i - 2];
  }
  int t;
  cin >> t;
  for (int i = 0; i < t; ++i) {
    long long n;
    cin >> n;
    cout << solve(n) << '\n';
  }
  return 0;
}
