#include <bits/stdc++.h>
using namespace std;
const int N = 100000 + 5;
const int SIZE = 4 * N;
int n;
int q;
int a[N];
pair<int, int> st[SIZE];
pair<int, int> f(pair<int, int> a, pair<int, int> b){
if(a.first == b.first) return make_pair(a.first, a.second + b.second);
return a < b ? a : b;
}
void build(int pos = 1, int l = 0, int r = n - 1){
if(l == r){
st[pos] = make_pair(a[l], 1);
return;
}
int mi = (l + r) / 2;
build(2 * pos, l, mi);
build(2 * pos + 1, mi + 1, r);
st[pos] = f(st[2 * pos], st[2 * pos + 1]);
}
void update(int x, int y, int pos = 1, int l = 0, int r = n - 1){
if(l == r){
st[pos].first = y;
return;
}
int mi = (l + r) / 2;
if(x <= mi) update(x, y, 2 * pos, l, mi);
else update(x, y, 2 * pos + 1, mi + 1, r);
st[pos] = f(st[2 * pos], st[2 * pos + 1]);
}
pair<int, int> query(int x, int y, int pos = 1, int l = 0, int r = n - 1){
if(y < l or r < x) return make_pair(INT_MAX, 0); // No hay posiciones que quiera sumar en este rango
if(x <= l and r <= y) return st[pos]; // Todo el rango [l, r] está dentro de [x, y]
int mi = (l + r) / 2;
return f(query(x, y, 2 * pos, l, mi), query(x, y, 2 * pos + 1, mi + 1, r));
}
int main() {
scanf("%d %d", &n, &q);
for(int i = 0; i < n; i++){
scanf("%d", a + i);
}
build();
while(q--){
int op, l, r;
scanf("%d %d %d", &op, &l, &r);
if(op == 1) update(l, r);
else{
pair<int, int> res = query(l, r - 1);
printf("%d %d\n", res.first, res.second);
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTiA9IDEwMDAwMCArIDU7CmNvbnN0IGludCBTSVpFID0gNCAqIE47CgppbnQgbjsKaW50IHE7CmludCBhW05dOwpwYWlyPGludCwgaW50PiBzdFtTSVpFXTsKCnBhaXI8aW50LCBpbnQ+IGYocGFpcjxpbnQsIGludD4gYSwgcGFpcjxpbnQsIGludD4gYil7CglpZihhLmZpcnN0ID09IGIuZmlyc3QpIHJldHVybiBtYWtlX3BhaXIoYS5maXJzdCwgYS5zZWNvbmQgKyBiLnNlY29uZCk7CglyZXR1cm4gYSA8IGIgPyBhIDogYjsKfQoKdm9pZCBidWlsZChpbnQgcG9zID0gMSwgaW50IGwgPSAwLCBpbnQgciA9IG4gLSAxKXsKCWlmKGwgPT0gcil7CgkJc3RbcG9zXSA9IG1ha2VfcGFpcihhW2xdLCAxKTsKCQlyZXR1cm47Cgl9CglpbnQgbWkgPSAobCArIHIpIC8gMjsKCWJ1aWxkKDIgKiBwb3MsIGwsIG1pKTsKCWJ1aWxkKDIgKiBwb3MgKyAxLCBtaSArIDEsIHIpOwoJc3RbcG9zXSA9IGYoc3RbMiAqIHBvc10sIHN0WzIgKiBwb3MgKyAxXSk7Cn0KCnZvaWQgdXBkYXRlKGludCB4LCBpbnQgeSwgaW50IHBvcyA9IDEsIGludCBsID0gMCwgaW50IHIgPSBuIC0gMSl7CglpZihsID09IHIpewoJCXN0W3Bvc10uZmlyc3QgPSB5OwoJCXJldHVybjsKCX0KCWludCBtaSA9IChsICsgcikgLyAyOwoJaWYoeCA8PSBtaSkgdXBkYXRlKHgsIHksIDIgKiBwb3MsIGwsIG1pKTsKCWVsc2UgdXBkYXRlKHgsIHksIDIgKiBwb3MgKyAxLCBtaSArIDEsIHIpOwoJc3RbcG9zXSA9IGYoc3RbMiAqIHBvc10sIHN0WzIgKiBwb3MgKyAxXSk7Cn0KCnBhaXI8aW50LCBpbnQ+IHF1ZXJ5KGludCB4LCBpbnQgeSwgaW50IHBvcyA9IDEsIGludCBsID0gMCwgaW50IHIgPSBuIC0gMSl7CglpZih5IDwgbCBvciByIDwgeCkgcmV0dXJuIG1ha2VfcGFpcihJTlRfTUFYLCAwKTsgLy8gTm8gaGF5IHBvc2ljaW9uZXMgcXVlIHF1aWVyYSBzdW1hciBlbiBlc3RlIHJhbmdvCglpZih4IDw9IGwgYW5kIHIgPD0geSkgcmV0dXJuIHN0W3Bvc107IC8vIFRvZG8gZWwgcmFuZ28gW2wsIHJdIGVzdMOhIGRlbnRybyBkZSBbeCwgeV0KCWludCBtaSA9IChsICsgcikgLyAyOwoJcmV0dXJuIGYocXVlcnkoeCwgeSwgMiAqIHBvcywgbCwgbWkpLCBxdWVyeSh4LCB5LCAyICogcG9zICsgMSwgbWkgKyAxLCByKSk7Cn0KCmludCBtYWluKCkgewoJc2NhbmYoIiVkICVkIiwgJm4sICZxKTsKCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewoJCXNjYW5mKCIlZCIsIGEgKyBpKTsKCX0KCWJ1aWxkKCk7Cgl3aGlsZShxLS0pewoJCWludCBvcCwgbCwgcjsKCQlzY2FuZigiJWQgJWQgJWQiLCAmb3AsICZsLCAmcik7CgkJaWYob3AgPT0gMSkgdXBkYXRlKGwsIHIpOwoJCWVsc2V7CgkJCXBhaXI8aW50LCBpbnQ+IHJlcyA9IHF1ZXJ5KGwsIHIgLSAxKTsKCQkJcHJpbnRmKCIlZCAlZFxuIiwgcmVzLmZpcnN0LCByZXMuc2Vjb25kKTsKCQl9Cgl9CglyZXR1cm4gMDsKfQ==