#include <iostream>
using namespace std;
#define int long long
const int P=(1LL<<12)-1;//构造12位最大十进制数

signed main() {
    int T;
    cin >> T;
    int ans;
    while (T-- > 0) {
        int o, x, p;
        cin >> o >> x >> p;
        switch(o){
            case 1:ans=(x<<p)&P;break;//保证是12位以内
            case 2:ans=x>>p;
                if(p>0){
                    int mask=(1<<(12-p))-1;//构造掩码
                    mask=(~mask)&P;//取反码补高位1
                    ans|=mask;
                }break;
            case 3:ans=x&(~(1<<p));break;
            case 4:ans=x|(1<<p);break;
        }
        ans&=P;//保证结果在12位以内
        cout << ans << endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")