For this Question: A number is called tricky if it does not contain two adjacent 1's in its binary representation like 5 (101) 8 (100) etc. Given an integer X, your task is to print the smallest tricky number which is greater than or equal to X.The first line of input contains a single integer T denoting the number of test cases. Next T lines contain a single integer, the value of X.

Constraints:-
1 <= T <= 100000
1 <= X <= 1000000000For each test case print the smallest tricky number which is greater than or equal to X.Sample Input:-
2
6
12

Sample Output:-
8
16, I have written this Solution Code: 
#include <bits/stdc++.h>


using namespace std;

#define MEM(a, b) memset(a, (b), sizeof(a))

#define FOREACH(it, l) for (auto it = l.begin(); it != l.end(); it++)

#define IN(A, B, C) assert( B <= A && A <= C)

#define MP make_pair
#define FOR(i,a) for(int i=0;i<a;i++)

#define FOR1(i,j,a) for(int i=j;i<a;i++)

#define EB emplace_back

#define INF (int)1e9

#define EPS 1e-9

#define PI 3.1415926535897932384626433832795
#define max1 1001
#define MOD 1000000007

#define read(type) readInt<type>()

#define out(x) cout<<x<<'\n'
#define out1(x) cout<<x<<" "
#define END cout<<'\n'
#define int long long
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(), (v).end()
void fast(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
}
int solve(int n){
int cnt=0;
int p=sqrt(n);
for(int i=1;i<=p;i++){
    if(n%i==0){
        cnt++;
        if(i*i!=n){cnt++;}
    }

}
return cnt;
}

 int dp[max1][max1];
vector<int> v;
signed main(){
         int t;
         cin>>t;
         while(t--){

         int x;
         cin>>x;

       vector<bool> bin;
    while (x != 0)
    {
        bin.push_back(x&1);
        x >>= 1;
    }

    bin.push_back(0);
    int n = bin.size();
    int last_final = 0;

    for (int i=1; i<n-1; i++)
    {
       if (bin[i] == 1 && bin[i-1] == 1 && bin[i+1] != 1)
       {

            bin[i+1] = 1;

            for (int j=i; j>=last_final; j--)
                bin[j] = 0;
            last_final = i+1;
        }
    }

    int ans = 0;
    for (int i =0; i<n; i++)
        ans += bin[i]*(1<<i);

    out(ans);
}
}
, In this Programming Language: C++, Now tell me if this Code is compilable or not?