#include<cstdio>
#include<algorithm>
int n,m,X0,Y0,X1,Y1,rs[60007],rp,xs[60007],xp;
char op[15];
void mins(int&a,int b){if(a>b)a=b;}
void maxs(int&a,int b){if(a<b)a=b;}
int vs[60007],ch[80007*401][2],sz[80007*401],p=0;
struct node{
int x[2],mn[2],mx[2],v,rt,id;
node*c[2],*f;
void init(int ID){
scanf("%d%d%d",x,x+1,&v);
mn[0]=mx[0]=x[0];
mn[1]=mx[1]=x[1];
id=ID;
vs[id]=v;
rt=++p;
}
void up(){
for(int i=0;i<2;++i)if(c[i]){
c[i]->f=this;
for(int j=0;j<2;++j){
mins(mn[j],c[i]->mn[j]);
maxs(mx[j],c[i]->mx[j]);
}
}
}
void ins(int x){
int w=rt;
++sz[w];
for(int i=15;~i;--i){
int d=x>>i&1;
if(!ch[w][d])ch[w][d]=++p;
++sz[w=ch[w][d]];
}
if(f)f->ins(x);
}
void del(int x){
int w=rt;
--sz[w];
for(int i=15;~i;--i)--sz[w=ch[w][x>>i&1]];
if(f)f->del(x);
}
void get(){
if(mx[0]<X0||mn[0]>X1||mx[1]<Y0||mn[1]>Y1)return;
if(X0<=mn[0]&&mx[0]<=X1&&Y0<=mn[1]&&mx[1]<=Y1){
rs[rp++]=rt;
return;
}
if(X0<=x[0]&&x[0]<=X1&&Y0<=x[1]&&x[1]<=Y1)xs[xp++]=v;
for(int i=0;i<2;++i)if(c[i])c[i]->get();
}
}ns[60007],*rt,*nr[60007];
int dx=0;
bool operator<(const node&a,const node&b){
return a.x[dx]!=b.x[dx]?a.x[dx]<b.x[dx]:a.x[dx^1]<b.x[dx^1];
}
node*build(node*l,node*r){
if(l==r)return 0;
node*m=l+(r-l>>1);
std::nth_element(l,m,r);
dx^=1;
m->c[0]=build(l,m);
m->c[1]=build(m+1,r);
dx^=1;
m->up();
return m;
}
void query(int k){
int L=0,R=65535,M,s=xp;
for(int i=0;i<rp;++i)s+=sz[rs[i]];
if(s<k||!k){
puts("It doesn‘t exist.");
return;
}
while(L<R){
M=L+R>>1;
s=0;
for(int i=0;i<rp;++i)s+=sz[ch[rs[i]][0]];
for(int i=0;i<xp;++i)if(L<=xs[i]&&xs[i]<=M)++s;
if(s<k){
k-=s;
for(int i=0;i<rp;++i)rs[i]=ch[rs[i]][1];
L=M+1;
}else{
for(int i=0;i<rp;++i)rs[i]=ch[rs[i]][0];
R=M;
}
}
printf("%d\n",vs[L]);
}
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<n;++i)ns[i].init(i);
std::sort(vs,vs+n);
rt=build(ns,ns+n);
for(int i=0;i<n;++i)nr[ns[i].id]=ns+i;
for(int i=0;i<n;++i)ns[i].ins(ns[i].v=std::lower_bound(vs,vs+n,ns[i].v)-vs);
for(int i=0;i<m;++i){
scanf("%s",op);
if(op[0]==‘Q‘){
int k;
scanf("%d%d%d%d%d",&X0,&Y0,&X1,&Y1,&k);
if(X0>X1)std::swap(X0,X1);
if(Y0>Y1)std::swap(Y0,Y1);
rp=xp=0;
rt->get();
query(k);
}else{
int a,b,av,bv;
scanf("%d%d",&a,&b);
av=nr[a]->v;
bv=nr[b]->v;
nr[a]->v=bv;
nr[b]->v=av;
nr[a]->del(av);
nr[a]->ins(bv);
nr[b]->del(bv);
nr[b]->ins(av);
}
}
return 0;
}