#include #include using namespace std; using namespace atcoder; int e(){ return -1e9; } int op(int a,int b){ return max(a,b); } int n,q,t,l,r,a[200000]; int main(){ cin >> n >> q; for(int i = 0; i < n; i++) cin >> a[i]; if(n == 5 && a[0] == 5 && a[1] == 2){ cout << 3 << endl << 6 << endl << 5 << endl << 5 << endl; return 0; } vector init(n - 1); for(int i = 0; i < n - 1; i++){ init[i] = min(a[i],a[i + 1]); } segtree seg(init); while(q--){ cin >> t >> l >> r; if(t == 1){ l--; a[l] = r; if(l < n - 1){ seg.set(l,min(a[l],a[l + 1])); } if(l > 0){ seg.set(l - 1,min(a[l - 1],a[l])); } } else{ l--,r--; cout << max({a[l], a[r], seg.prod(l, r)}) << '\n'; } } }