#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[100009],b[100009],xds[400009],n,m,lazy[400009],aans;
struct n1{
int op,l,r;
}cao[100009];
inline int chu(int x,int l,int r){
if(l==r) {
xds[x]=b[l];
return b[l];
}
xds[x]=0;
int mid=(r+l)/2;
xds[x]+=chu(x*2,l,mid);
xds[x]+=chu(x*2+1,mid+1,r);
return xds[x];
}
inline int cha(int x,int l,int r,int xl,int xr){
if(r<xl||l>xr) return 0;
if(l==r){
if(lazy[x]==-1) return xds[x];
return lazy[x];
}
if(xl<=l&&xr>=r){
return xds[x];
}
int mid=(r+l)/2;
if(lazy[x]==0){
lazy[x*2]=0,lazy[x*2+1]=0;
xds[x*2]=0,xds[x*2+1]=0;
lazy[x]=-1;
xds[x]=0;
}
if(lazy[x]==1){
lazy[x*2]=1,lazy[x*2+1]=1;
xds[x*2]=mid-l+1,xds[x*2+1]=r-mid;
lazy[x]=-1;
xds[x]=r-l+1;
}
int summ=0;
summ+=cha(x*2,l,mid,xl,xr);
summ+=cha(x*2+1,mid+1,r,xl,xr);
return summ;
}
inline int xiu(int x,int l,int r,int xl,int xr,int d){
if(r<xl||l>xr) return 0;
int mid=(r+l)/2;
if(l==r) {
xds[x]=d;
return xds[x];
}
if(lazy[x]==0){
lazy[x*2]=0,lazy[x*2+1]=0;
xds[x*2]=0,xds[x*2+1]=0;
lazy[x]=-1;
}
if(lazy[x]==1){
lazy[x*2]=1,lazy[x*2+1]=1;
xds[x*2]=mid-l+1,xds[x*2+1]=r-mid;
lazy[x]=-1;
}
if(xl<=l&&xr>=r){
if(d==0) xds[x]=0;
if(d==1) xds[x]=r-l+1;
lazy[x]=d;
return xds[x];
}
int summ=0;
if(xl<=mid) summ+=xiu(x*2,l,mid,xl,xr,d);
else{
summ+=xds[x*2];
}
if(xr>mid) summ+=xiu(x*2+1,mid+1,r,xl,xr,d);
else{
summ+=xds[x*2+1];
}
return summ;
}
inline bool check(int mid){
for(int i=1;i<=n;i++){
if(a[i]>=mid) b[i]=1;
else b[i]=0;
}
memset(lazy,-1,sizeof lazy);
chu(1,1,n);
for(int i=1;i<=m;i++){
int op=cao[i].op,l=cao[i].l,r=cao[i].r;
int v=cha(1,1,n,l,r);
if(op==0){
if(l<=r-v)xiu(1,1,n,l,r-v,0);
if(r-v+1<=r)xiu(1,1,n,r-v+1,r,1);
}
if(op==1){
if(l<=l+v-1)xiu(1,1,n,l,l+v-1,1);
if(l+v<=r)xiu(1,1,n,l+v,r,0);
}
}
if(cha(1,1,n,aans,aans)>1) while(1);
return cha(1,1,n,aans,aans);
}
inline void solve(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=m;i++){
cin>>cao[i].op>>cao[i].l>>cao[i].r;
}
cin>>aans;
int l=1,r=n;
while(l<r){
int mid=l+(r-l+1)/2;
if(check(mid)==1) l=mid;
else r=mid-1;
}
cout<<l<<'\n';
}
signed main(){
solve();
return 0;
}