#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define mp make_pair
#define pb push_back
#define pii pair<int, int>
map<ll, ll> lft, rgt;
map<ll, ll> val;
ll qry(ll l, ll r){
if(val.find(r) == val.end()) return r;
auto it = rgt.upper_bound(r);
if(rgt.find(r) != rgt.end()) it = rgt.find(r);
if(it -> second <= l) return 0;
return (it -> second - 1);
}
void clear(){
val.clear();
lft.clear();
rgt.clear();
}
void update(int x){
if(val.find(x) != val.end()) return;
val[x] = 0;
if(rgt.find(x-1) != rgt.end()){
ll l = rgt[x-1];
rgt.erase(rgt.find(x-1));
rgt[x] = l;
}else{
rgt[x] = x;
}
auto it = rgt.upper_bound(x);
if(it != rgt.end()){
ll l = it -> second;
if(l == x+1){
ll r = it -> first;
ll _l = rgt[x];
rgt.erase(rgt.find(x));
rgt[r] = _l;
}
}
}
void print(){
for(auto i :rgt ) cout << "(" << i.first << " " << i.second << ") "; cout << endl;
}
int main(){
ios_base :: sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
while(t--){
clear();
ll n, q, s = 0;
cin >> n >> q;
while(q--){
int ty;
cin >> ty;
if(ty == 1){
ll x;
cin >> x;
//x += s;
update(x);
//cout << x << endl;
}else{
ll l, r;
cin >> l >> r;
//l += s, r += s;
ll ans = qry(l, r);
s = (s + ans) % n;
cout << ans << '\n';
}
// print();
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwoKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBwaWkgcGFpcjxpbnQsIGludD4KCm1hcDxsbCwgbGw+IGxmdCwgcmd0OwptYXA8bGwsIGxsPiB2YWw7CgpsbCBxcnkobGwgbCwgbGwgcil7CiAgICBpZih2YWwuZmluZChyKSA9PSB2YWwuZW5kKCkpIHJldHVybiByOwogICAgYXV0byBpdCA9IHJndC51cHBlcl9ib3VuZChyKTsKICAgIGlmKHJndC5maW5kKHIpICE9IHJndC5lbmQoKSkgaXQgPSByZ3QuZmluZChyKTsKICAgIGlmKGl0IC0+IHNlY29uZCA8PSBsKSByZXR1cm4gMDsKICAgIHJldHVybiAoaXQgLT4gc2Vjb25kIC0gMSk7Cn0KCnZvaWQgY2xlYXIoKXsKICAgIHZhbC5jbGVhcigpOwogICAgbGZ0LmNsZWFyKCk7CiAgICByZ3QuY2xlYXIoKTsKfQoKdm9pZCB1cGRhdGUoaW50IHgpewogICAgaWYodmFsLmZpbmQoeCkgIT0gdmFsLmVuZCgpKSByZXR1cm47CiAgICB2YWxbeF0gPSAwOwogICAgaWYocmd0LmZpbmQoeC0xKSAhPSByZ3QuZW5kKCkpewogICAgICAgIGxsIGwgPSByZ3RbeC0xXTsKICAgICAgICByZ3QuZXJhc2Uocmd0LmZpbmQoeC0xKSk7CiAgICAgICAgcmd0W3hdID0gbDsKICAgIH1lbHNlewogICAgICAgIHJndFt4XSA9IHg7CiAgICB9CiAgICBhdXRvIGl0ID0gcmd0LnVwcGVyX2JvdW5kKHgpOwogICAgaWYoaXQgIT0gcmd0LmVuZCgpKXsKICAgICAgICBsbCBsID0gaXQgLT4gc2Vjb25kOwogICAgICAgIGlmKGwgPT0geCsxKXsKICAgICAgICAgICAgbGwgciA9IGl0IC0+IGZpcnN0OwogICAgICAgICAgICBsbCBfbCA9IHJndFt4XTsKICAgICAgICAgICAgcmd0LmVyYXNlKHJndC5maW5kKHgpKTsKICAgICAgICAgICAgcmd0W3JdID0gX2w7CiAgICAgICAgfQogICAgfQp9Cgp2b2lkIHByaW50KCl7CiAgICBmb3IoYXV0byBpIDpyZ3QgKSBjb3V0IDw8ICIoIiA8PCBpLmZpcnN0IDw8ICIgIiA8PCBpLnNlY29uZCA8PCAiKSAiOyBjb3V0IDw8IGVuZGw7Cn0KCmludCBtYWluKCl7CiAgICBpb3NfYmFzZSA6OiBzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgCiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUodC0tKXsKICAgICAgICBjbGVhcigpOwogICAgICAgIGxsIG4sIHEsIHMgPSAwOwogICAgICAgIGNpbiA+PiBuID4+IHE7CiAgICAgICAgd2hpbGUocS0tKXsKICAgICAgICAgICAgaW50IHR5OwogICAgICAgICAgICBjaW4gPj4gdHk7CiAgICAgICAgICAgIGlmKHR5ID09IDEpewogICAgICAgICAgICAgICAgbGwgeDsKICAgICAgICAgICAgICAgIGNpbiA+PiB4OwogICAgICAgICAgICAgICAgLy94ICs9IHM7CiAgICAgICAgICAgICAgICB1cGRhdGUoeCk7CiAgICAgICAgICAgICAgICAvL2NvdXQgPDwgeCA8PCBlbmRsOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIGxsIGwsIHI7CiAgICAgICAgICAgICAgICBjaW4gPj4gbCA+PiByOwogICAgICAgICAgICAgICAgLy9sICs9IHMsIHIgKz0gczsKICAgICAgICAgICAgICAgIGxsIGFucyA9IHFyeShsLCByKTsKICAgICAgICAgICAgICAgIHMgPSAocyAgKyBhbnMpICUgbjsKICAgICAgICAgICAgICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAvLyBwcmludCgpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9