#include <bits/stdc++.h>
using namespace std;
long long d1[] = {0, 2, 3, 1};
long long fn1(long long start, long long pos, long long len) {
  long long zzz = len / 4;
  if (len == 1) return start;
  for (long long i = 0; i < 4; i++) {
    long long l = i * zzz;
    long long r = l + (zzz - 1);
    if (l <= pos && pos <= r) return fn1(start + d1[i] * zzz, pos - l, zzz);
  }
  return -1;
}
long long d2[] = {0, 3, 1, 2};
long long fn2(long long start, long long pos, long long len) {
  long long zzz = len / 4;
  if (len == 1) return start;
  for (long long i = 0; i < 4; i++) {
    long long l = i * zzz;
    long long r = l + (zzz - 1);
    if (l <= pos && pos <= r) return fn2(start + d2[i] * zzz, pos - l, zzz);
  }
  return -1;
}
long long solve() {
  long long n;
  cin >> n;
  n--;
  long long row = n / 3;
  long long col = n % 3;
  if (col == 0) {
    long long pos = row;
    long long temp = 1;
    long long start = 1;
    while (true) {
      if (pos - temp >= 0) {
        pos -= temp;
        temp *= 4;
        start *= 4;
        continue;
      }
      break;
    }
    cout << start + pos << "\n";
  }
  if (col == 1) {
    long long pos = row;
    long long temp = 1;
    long long start = 2;
    while (true) {
      if (pos - temp >= 0) {
        pos -= temp;
        temp *= 4;
        start *= 4;
        continue;
      }
      break;
    }
    cout << fn1(start, pos, temp) << "\n";
  }
  if (col == 2) {
    long long pos = row;
    long long temp = 1;
    long long start = 3;
    while (true) {
      if (pos - temp >= 0) {
        pos -= temp;
        temp *= 4;
        start *= 4;
        continue;
      }
      break;
    }
    cout << fn2(start, pos, temp) << "\n";
  }
  return 0;
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  ;
  long long t = 1;
  cin >> t;
  while (t-- != 0) {
    long long stat = solve();
  }
  return 0;
}
