#include<cstdio>
#include<algorithm>
#include<set>
#include<iostream>
#define Chtholly_tree ct
#define Chtholly set<Chtholly_tree>::iterator
using namespace std;
struct Chtholly_tree{
int l,r;
mutable int val;
ct(int a=-1,int b=-1,int c=0){l=a,r=b,val=c;}
bool operator <(const Chtholly_tree &c)const{return l<c.l;}
};
int n,m;
set<Chtholly_tree>st;
Chtholly split(int p){
Chtholly it=st.lower_bound(ct(p,0,0));
if(it!=st.end()&&it->l==p)return it;
it--;ct tmp=*it;st.erase(it);
st.insert(ct(tmp.l,p-1,tmp.val));
return st.insert(ct(p,tmp.r,tmp.val)).first;
}
void cntsort(int L,int R,bool b){
Chtholly r=split(R+1),l=split(L);
int c[114514]={0};int pos=L;int mxp=0,mnp=1919810;
for(Chtholly ll=l;ll!=r;ll++)mnp=min(mnp,ll->val),mxp=max(mxp,ll->val),c[ll->val]+=(ll->r)-(ll->l)+1;
st.erase(l,r);
if(b)for(int i=mnp;i<=mxp;i++){
if(c[i]==0)continue;
st.insert(ct(pos,pos+c[i]-1,i)),pos+=c[i];
}
else for(int i=mxp;i>=mnp;i--){
if(c[i]==0)continue;
st.insert(ct(pos,pos+c[i]-1,i)),pos+=c[i];
}
}
signed main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
int xx;
scanf("%d",&xx);
st.insert(ct(i,i,xx));
}
st.insert(ct(n+1,n+1,0));
while(m--){
int l,r,op;
scanf("%d%d%d",&op,&l,&r);
cntsort(l,r,!op);
}
int cnt=0,q=0;
scanf("%d",&q);
for(Chtholly it=st.begin();it!=st.end()&&it->r<=n;it++){
for(int i=it->l;i<=it->r;i++)if(++cnt==q)return printf("%d",it->val),0;
}
return 0;
}