#include <iostream>
#include <vector>
using namespace std;
int minimum(vector<int> &v, int a, int b) {
int m;
if (a == b)
m = v[a];
else if (b == a+1)
m = min(v[a], v[b]);
else
{
int h = (a + b) / 2;
m = min(minimum(v, a, h), minimum(v, h + 1, b));
}
return m;
}
int main() {
int n, q;
cin >> n >> q;
vector<int> v(n);
for (int i = 0; i < n; ++i) {
cin >> v[i];
}
for (int i = 0; i < q; ++i) {
int t_query;
cin >> t_query;
if (t_query == 1) {
int k, u;
cin >> k >> u;
v[k-1] = u;
}
else if (t_query == 2) {
int a, b;
cin >> a >> b;
--a;
--b;
cout << minimum(v, a, b) << endl;
}
else {
cerr << "Invalid query type: " << t_query << endl;
}
}
}