#include <bits/stdc++.h>
using namespace std;
const int m = 86;
long long f[m] = {1, 2};
bool v[m];
long long G[m][2];
long long g(int i, bool carry) {
  if (i == -1) return !carry;
  if (i < 0) return 0;
  long long &res = G[i][carry];
  if (res < 0) {
    res = 0;
    if (v[i] && carry) {
      if (i >= 2 && !v[i - 1]) {
        res += g(i - 2, true);
      }
    } else {
      res = g(i - 1, false);
      if (i >= 2 && (carry || v[i]) && !v[i - 1]) {
        res += g(i - 2, true);
      }
    }
  }
  return res;
}
int main() {
  for (int i(2); i < m; ++i) {
    f[i] = f[i - 1] + f[i - 2];
  }
  int T;
  for (cin >> T; T-- > 0;) {
    long long x;
    cin >> x;
    for (int i = m - 1; i >= 0; --i) {
      if (f[i] <= x) {
        x -= f[i];
        v[i] = true;
      } else
        v[i] = false;
    }
    assert(x == 0);
    memset(G, -1, sizeof G);
    cout << g(m - 1, false) << endl;
  }
  return 0;
}
