#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
inline int64_t rnd(int64_t l = 0, int64_t r = INT_MAX) {
  return uniform_int_distribution<int64_t>(l, r)(rng);
}
bool in_range(int64_t x, int64_t l, int64_t r) { return l <= x && x <= r; }
template <typename H, typename... T>
void inp(H &head) {
  cin >> head;
}
template <typename H, typename... T>
void inp(H &head, T &...tail) {
  cin >> head;
  inp(tail...);
}
template <typename T>
inline istream &operator>>(istream &in, vector<T> &a) {
  for (T &x : a) in >> x;
  return in;
}
template <typename T, typename U>
inline istream &operator>>(istream &in, pair<T, U> &a) {
  in >> a.first >> a.second;
  return in;
}
template <int64_t D, typename T>
struct vec : public vector<vec<D - 1, T>> {
  static_assert(D >= 1, "Vector dimensions must be greater than zero !!");
  template <typename... Args>
  vec(int64_t n = 0, Args... args)
      : vector<vec<D - 1, T>>(n, vec<D - 1, T>(args...)) {}
};
template <typename T>
struct vec<1, T> : public vector<T> {
  vec(int64_t n = 0, T val = T()) : vector<T>(n, val) {}
};
const int64_t inf = 1e15;
const bool testcases = true;
void init_main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
}
int64_t log(int64_t a, int64_t b) { return log(a) / log(b); }
const int64_t mxn = 38;
vector<int64_t> power(mxn + 1);
map<int64_t, int64_t> mp;
void f(int64_t n) {
  mp.clear();
  int64_t _r = mxn;
  while (n > 0) {
    int64_t l = 0, r = _r, mid, ans;
    while (l <= r) {
      mid = (l + r) / 2;
      if (power[mid] <= n) {
        ans = mid;
        l = mid + 1;
        continue;
      }
      r = mid - 1;
    }
    n -= power[ans];
    _r = mid;
    mp[ans]++;
  }
}
void solve(int64_t tc) {
  int64_t n;
  cin >> n;
  f(n);
  int64_t res = n;
  for (int64_t i = 0; i < mxn; i++) {
    if (mp[i] == 2) {
      res += power[i];
      mp[i] = 0;
      mp[i + 1]++;
    } else if (mp[i] == 3) {
      mp[i] = 0;
      mp[i + 1]++;
    }
  }
  for (int64_t i = mxn; i >= 0; i--) {
    if (res - power[i] >= n && mp[i]) res -= power[i];
  }
  cout << res << '\n';
}
int32_t main(int32_t argc, char **argv) {
  init_main();
  power[0] = 1;
  for (int64_t i = 1; i <= mxn; i++) power[i] = power[i - 1] * 3;
  int64_t TC = 1;
  if (testcases) cin >> TC;
  for (int64_t tc = 1; tc <= TC; ++tc) {
    solve(tc);
    108;
  }
  return 0;
}
