#include <bits/stdc++.h>
using namespace std;
const int N = 90;
long long f[N];
int dp[N][2];
void solve() {
  long long n;
  cin >> n;
  deque<int> v;
  for (int i = N - 1; i >= 1; i--)
    if (n >= f[i]) v.push_front(i), n -= f[i];
  dp[0][1] = 1;
  dp[0][0] = (v[0] - 1) / 2;
  for (int i = 1; i < v.size(); i++) {
    dp[i][1] = dp[i - 1][0] + dp[i - 1][1];
    dp[i][0] = dp[i - 1][1] * ((v[i] - v[i - 1] - 1) / 2) +
               dp[i - 1][0] * ((v[i] - v[i - 1]) / 2);
  }
  cout << dp[v.size() - 1][0] + dp[v.size() - 1][1] << endl;
}
int main() {
  f[0] = f[1] = 1;
  for (int i = 2; i < N; i++) f[i] = f[i - 1] + f[i - 2];
  int t;
  cin >> t;
  while (t--) solve();
  return 0;
}
