func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long MOD = 1e9 + 7;   const int INF = 1e9;   const long long IINF = 1e18;   const int dx[4] = {1, 0, -1, 0};   const int dy[4] = {0, 1, 0, -1};   const char dir[4] = { D ,  R ,  U ,  L };   template <typename T>   istream &operator>>(istream &is, vector<T> &v) {     for (T &x : v) is >> x;     return is;   }   template <typename T>   ostream &operator<<(ostream &os, const vector<T> &v) {     for (int i = 0; i < v.size(); ++i) {       os << v[i] << (i + 1 == v.size() ?   n  :    );     }     return os;   }   template <typename T, typename U>   ostream &operator<<(ostream &os, const pair<T, U> &p) {     cout <<  (  << p.first <<  ,  << p.second <<  ) ;     return os;   }   template <class T>   inline bool chmin(T &a, T b) {     if (a > b) {       a = b;       return true;     }     return false;   }   template <class T>   inline bool chmax(T &a, T b) {     if (a < b) {       a = b;       return true;     }     return false;   }   void solve(long long n) {     long long m = n;     vector<int> convert;     while (3 <= m) {       convert.emplace_back(m % 3);       m /= 3;     }     convert.emplace_back(m);     convert.emplace_back(0);     int d = convert.size(), most;     for (most = d - 1; most >= 0; --most) {       if (convert[most] == 2) break;     }     if (most < 0) {       cout << n <<   n ;       return;     }     for (int i = 0; i < most; ++i) convert[i] = 0;     for (int i = most; i < d; ++i) {       if (convert[i] == 2)         convert[i] = 0, convert[i + 1] += 1;       else if (convert[i] == 3)         convert[i] = 0, convert[i + 1] + -1;     }     long long po = 1, ans = 0;     for (int i = 0; i < d; ++i) {       ans += po * convert[i];       po *= 3;     }     cout << ans <<   n ;   }   int main() {     cin.tie(0);     ios::sync_with_stdio(false);     int t;     cin >> t;     for (; t--;) {       long long n;       cin >> n;       solve(n);     }   }   