#include <bits/stdc++.h>
using namespace std;

const int N= 5e5+5,inf=1e9+7;

int n,q,len;

int a[N];
int mx[N],mn[N];

void solve(){
    cin>>n>>q;
    len=ceil(sqrt(n));
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=0;i<=n/len;i++){
        mx[i]=-inf;
        mn[i]=inf;
    }
    for(int i=1;i<=n;i++){
        mx[i/len]=max(mx[i/len],a[i]);
        mn[i/len]=min(mn[i/len],a[i]);
    }
    int l,r,op;
    while(q--){
        cin>>op>>l>>r;
        if(op==1){
            int res=inf;
            if(l/len==r/len){
                for(int i=l;i<=r;i++){
                    res=min(res,a[i]);
                }
            }else {
                for(int j=l/len+1;j<r/len;j++){
                    res=min(res,mn[j]);
                }
                for(int j=l;j<(l/len+1)*len;j++){
                    res=min(res,a[j]);
                }
                for(int j=r/len*len;j<=r;j++){
                    res=min(res,a[j]);
                }
            }
            cout<<res<<"\n";
        }else {
            int res=-inf;
            if(l/len==r/len){
                for(int i=l;i<=r;i++){
                    res=max(res,a[i]);
                }
            }else{
                for(int j=l/len+1;j<r/len;j++){
                    res=max(res,mx[j]);
                }
                for(int j=l;j<(l/len+1)*len;j++){
                    res=max(res,a[j]);
                }
                for(int j=r/len*len;j<=r;j++){
                    res=max(res,a[j]);
                }
            }
            cout<<res<<"\n";
        }
    } 

}

int main(){
    solve();
}