#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef long double ld;
#define all(x) (x).begin(), (x).end()
#define allr(x) (x).rbegin(), (x).rend()
#define vec vector
#define ar array
#define UNIQUE(c) (c).resize(unique(all(c)) - (c).begin())
#ifdef _MSC_VER
#define __builtin_popcount __popcnt
#define __builtin_clz __lzcnt
#endif
int dx[] = { 0, 0, 1, -1, 1, 1, -1, -1 };
int dy[] = { -1, 1, 0, 0, -1, 1, 1, -1 };
mt19937 rng(chrono::system_clock::now().time_since_epoch().count());
ll rnd(ll a, ll b) {
return a + rng() % (b - a + 1);
}
void file_f() {
#pragma warning(disable:26451)
#pragma warning(disable:6031)
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
#else
//freopen("army.in", "r", stdin);
//freopen("output.txt", "w", stdout);
#endif
}
// m3ande4 fekra eh da bs it's working
#define sim template < class c
#define ris return * this
#define dor > debug & operator <<
#define eni(x) sim > typename \
enable_if<sizeof dud<c>(0) x 1, debug&>::type operator<<(c i) {
sim > struct rge { c b, e; };
sim > rge<c> range(c i, c j) { return rge<c>{i, j}; }
sim > auto dud(c* x) -> decltype(cerr << *x, 0);
sim > char dud(...);
struct debug {
~debug() { cerr << endl; }
eni(!= ) cerr << boolalpha << i; ris;
}
eni(== ) ris << range(begin(i), end(i));
}
sim, class b dor(pair < b, c > d) {
ris << "(" << d.first << ", " << d.second << ")";
}
sim dor(rge<c> d) {
*this << "[";
for (auto it = d.b; it != d.e; ++it)
*this << ", " + 2 * (it == d.b) << *it;
ris << "]";
}
};
#define show(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
// debug & operator << (debug & dd, P p) { dd << "(" << p.x << ", " << p.y << ")"; return dd; }
#define x_q {
struct segtree {
int size = 0;
vector<ll> tree, mncount;
void init(int n) {
size = 1;
while (size < n) size *= 2;
tree.resize(2 * size);
mncount.resize(2 * size);
}
ll merge(ll x, ll y) {
return min(x, y);
}
void build(const vector<int>& v) {
for (int i = 0; i < (int) v.size(); i++) {
tree[size + i] = v[i];
mncount[size + i] = 1;
}
for (int i = size - 1; i >= 1; i--) {
tree[i] = merge(
tree[2 * i],
tree[2 * i + 1]
);
if (tree[i] == tree[2 * i]) {
mncount[i] += mncount[2 * i];
}
if (tree[i] == tree[2 * i + 1]) {
mncount[i] += mncount[2 * i + 1];
}
}
}
ll query(int lqry, int rqry) {
return query(1, lqry, rqry, 0, size - 1);
}
ll query(int i, int lqry, int rqry, int myl, int myr) {
if (myr < lqry || myl > rqry) return (ll) 2e9;
if (lqry <= myl && myr <= rqry) return tree[i];
int mid = (myl + myr) / 2;
int f = merge(
query(2 * i , lqry, rqry, myl , mid),
query(2 * i + 1, lqry, rqry, mid + 1, myr)
);
return f;
}
void upd(int i, int v) {
upd(1, i, i, 0, size - 1, v);
}
void upd(int i, int lqry, int rqry, int myl, int myr, int v) {
if (myr < lqry || myl > rqry) return;
if (lqry <= myl && myr <= rqry) {
tree[i] = v;
return;
}
int mid = (myl + myr) / 2;
upd(2 * i, lqry, rqry, myl, mid, v);
upd(2 * i + 1, lqry, rqry, mid + 1, myr, v);
tree[i] = merge(tree[2 * i], tree[2 * i + 1]);
mncount[i] = 0;
if (tree[i] == tree[2 * i]) {
mncount[i] += mncount[2 * i];
}
if (tree[i] == tree[2 * i + 1]) {
mncount[i] += mncount[2 * i + 1];
}
}
ll count(int lqry, int rqry, int mn) {
return count(1, lqry, rqry, 0, size - 1, mn);
}
ll count(int i, int lqry, int rqry, int myl, int myr, int mn) {
if (myr < lqry || myl > rqry) return (ll)0;
if (lqry <= myl && myr <= rqry) {
if (tree[i] == mn) return mncount[i];
return 0;
}
int mid = (myl + myr) / 2;
return count(2 * i, lqry, rqry, myl, mid, mn) +
count(2 * i + 1, lqry, rqry, mid + 1, myr, mn);
}
};
void solve() {
int n, m;
cin >> n >> m;
segtree st;
st.init(n);
vector<int> v(n);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
st.build(v);
while (m--) {
int op = 2;
cin >> op;
if (op == 1) {
int i, v;
cin >> i >> v;
//i--;
st.upd(i, v);
}
else {
int l, r;
cin >> l >> r;
//l--, r--;
r--;
ll mn = st.query(l, r);
ll cnt = st.count(l, r, mn);
cout << mn << " " << cnt << '\n';
}
}
}
int main() {
//file_f();
cin.tie(0); cin.sync_with_stdio(0);
//cout << setprecision(6) << fixed;
int T = 1;// cin >> T;
for (int i = 1; i <= T; i++) {
solve();
}
}
I2luY2x1ZGUgImJpdHMvc3RkYysrLmgiCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwojZGVmaW5lIGFsbCh4KSAoeCkuYmVnaW4oKSwgKHgpLmVuZCgpCiNkZWZpbmUgYWxscih4KSAoeCkucmJlZ2luKCksICh4KS5yZW5kKCkKI2RlZmluZSB2ZWMgdmVjdG9yCiNkZWZpbmUgYXIgYXJyYXkKI2RlZmluZSBVTklRVUUoYykgKGMpLnJlc2l6ZSh1bmlxdWUoYWxsKGMpKSAtIChjKS5iZWdpbigpKQojaWZkZWYgX01TQ19WRVIKI2RlZmluZSBfX2J1aWx0aW5fcG9wY291bnQgX19wb3BjbnQKI2RlZmluZSBfX2J1aWx0aW5fY2x6IF9fbHpjbnQKI2VuZGlmCmludCBkeFtdID0geyAwLCAwLCAxLCAtMSwgMSwgMSwgLTEsIC0xIH07CmludCBkeVtdID0geyAtMSwgMSwgMCwgMCwgLTEsIDEsIDEsIC0xIH07Cm10MTk5Mzcgcm5nKGNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CmxsIHJuZChsbCBhLCBsbCBiKSB7CiAgICByZXR1cm4gYSArIHJuZygpICUgKGIgLSBhICsgMSk7Cn0KCnZvaWQgZmlsZV9mKCkgewojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZToyNjQ1MSkKI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjAzMSkKI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgIGZyZW9wZW4oImluLnR4dCIsICJyIiwgc3RkaW4pOwogICAgLy9mcmVvcGVuKCJvdXQudHh0IiwgInciLCBzdGRvdXQpOwojZWxzZQogICAgLy9mcmVvcGVuKCJhcm15LmluIiwgInIiLCBzdGRpbik7CiAgICAvL2ZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiNlbmRpZgp9CgoKLy8gbTNhbmRlNCBmZWtyYSBlaCBkYSBicyBpdCdzIHdvcmtpbmcKI2RlZmluZSBzaW0gdGVtcGxhdGUgPCBjbGFzcyBjCiNkZWZpbmUgcmlzIHJldHVybiAqIHRoaXMKI2RlZmluZSBkb3IgPiBkZWJ1ZyAmIG9wZXJhdG9yIDw8CiNkZWZpbmUgZW5pKHgpIHNpbSA+IHR5cGVuYW1lIFwKICBlbmFibGVfaWY8c2l6ZW9mIGR1ZDxjPigwKSB4IDEsIGRlYnVnJj46OnR5cGUgb3BlcmF0b3I8PChjIGkpIHsKc2ltID4gc3RydWN0IHJnZSB7IGMgYiwgZTsgfTsKc2ltID4gcmdlPGM+IHJhbmdlKGMgaSwgYyBqKSB7IHJldHVybiByZ2U8Yz57aSwgan07IH0Kc2ltID4gYXV0byBkdWQoYyogeCkgLT4gZGVjbHR5cGUoY2VyciA8PCAqeCwgMCk7CnNpbSA+IGNoYXIgZHVkKC4uLik7CnN0cnVjdCBkZWJ1ZyB7CiAgICB+ZGVidWcoKSB7IGNlcnIgPDwgZW5kbDsgfQogICAgZW5pKCE9ICkgY2VyciA8PCBib29sYWxwaGEgPDwgaTsgcmlzOwp9CmVuaSg9PSApIHJpcyA8PCByYW5nZShiZWdpbihpKSwgZW5kKGkpKTsKfQpzaW0sIGNsYXNzIGIgZG9yKHBhaXIgPCBiLCBjID4gZCkgewogICAgcmlzIDw8ICIoIiA8PCBkLmZpcnN0IDw8ICIsICIgPDwgZC5zZWNvbmQgPDwgIikiOwp9CnNpbSBkb3IocmdlPGM+IGQpIHsKICAgICp0aGlzIDw8ICJbIjsKICAgIGZvciAoYXV0byBpdCA9IGQuYjsgaXQgIT0gZC5lOyArK2l0KQogICAgICAgICp0aGlzIDw8ICIsICIgKyAyICogKGl0ID09IGQuYikgPDwgKml0OwogICAgcmlzIDw8ICJdIjsKfQp9OwojZGVmaW5lIHNob3coLi4uKSAiIFsiIDw8ICNfX1ZBX0FSR1NfXyAiOiAiIDw8IChfX1ZBX0FSR1NfXykgPDwgIl0gIgovLyBkZWJ1ZyAmIG9wZXJhdG9yIDw8IChkZWJ1ZyAmIGRkLCBQIHApIHsgZGQgPDwgIigiIDw8IHAueCA8PCAiLCAiIDw8IHAueSA8PCAiKSI7IHJldHVybiBkZDsgfQojZGVmaW5lIHhfcSB7CgoKCnN0cnVjdCBzZWd0cmVlIHsKCiAgICBpbnQgc2l6ZSA9IDA7CiAgICB2ZWN0b3I8bGw+IHRyZWUsIG1uY291bnQ7CgogICAgdm9pZCBpbml0KGludCBuKSB7CiAgICAgICAgc2l6ZSA9IDE7CiAgICAgICAgd2hpbGUgKHNpemUgPCBuKSBzaXplICo9IDI7CiAgICAgICAgdHJlZS5yZXNpemUoMiAqIHNpemUpOwogICAgICAgIG1uY291bnQucmVzaXplKDIgKiBzaXplKTsKICAgIH0KCiAgICBsbCBtZXJnZShsbCB4LCBsbCB5KSB7CiAgICAgICAgcmV0dXJuIG1pbih4LCB5KTsKICAgIH0KCiAgICB2b2lkIGJ1aWxkKGNvbnN0IHZlY3RvcjxpbnQ+JiB2KSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KSB2LnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgIHRyZWVbc2l6ZSArIGldID0gdltpXTsKICAgICAgICAgICAgbW5jb3VudFtzaXplICsgaV0gPSAxOwogICAgICAgIH0KICAgICAgICBmb3IgKGludCBpID0gc2l6ZSAtIDE7IGkgPj0gMTsgaS0tKSB7CiAgICAgICAgICAgIHRyZWVbaV0gPSBtZXJnZSgKICAgICAgICAgICAgICAgIHRyZWVbMiAqIGldLAogICAgICAgICAgICAgICAgdHJlZVsyICogaSArIDFdCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICh0cmVlW2ldID09IHRyZWVbMiAqIGldKSB7CiAgICAgICAgICAgICAgICBtbmNvdW50W2ldICs9IG1uY291bnRbMiAqIGldOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0cmVlW2ldID09IHRyZWVbMiAqIGkgKyAxXSkgewogICAgICAgICAgICAgICAgbW5jb3VudFtpXSArPSBtbmNvdW50WzIgKiBpICsgMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKCiAgICBsbCBxdWVyeShpbnQgbHFyeSwgaW50IHJxcnkpIHsKICAgICAgICByZXR1cm4gcXVlcnkoMSwgbHFyeSwgcnFyeSwgMCwgc2l6ZSAtIDEpOwogICAgfQoKICAgIGxsIHF1ZXJ5KGludCBpLCBpbnQgbHFyeSwgaW50IHJxcnksIGludCBteWwsIGludCBteXIpIHsKICAgICAgICBpZiAobXlyIDwgbHFyeSB8fCBteWwgPiBycXJ5KSByZXR1cm4gKGxsKSAyZTk7CiAgICAgICAgaWYgKGxxcnkgPD0gbXlsICYmIG15ciA8PSBycXJ5KSByZXR1cm4gdHJlZVtpXTsKCiAgICAgICAgaW50IG1pZCA9IChteWwgKyBteXIpIC8gMjsKICAgICAgICBpbnQgZiA9IG1lcmdlKAogICAgICAgICAgICBxdWVyeSgyICogaSAgICAsIGxxcnksIHJxcnksIG15bCAgICAsIG1pZCksCiAgICAgICAgICAgIHF1ZXJ5KDIgKiBpICsgMSwgbHFyeSwgcnFyeSwgbWlkICsgMSwgbXlyKQogICAgICAgICk7CiAgICAgICAgcmV0dXJuIGY7CiAgICB9CgogICAgdm9pZCB1cGQoaW50IGksIGludCB2KSB7CiAgICAgICAgdXBkKDEsIGksIGksIDAsIHNpemUgLSAxLCB2KTsKICAgIH0KCiAgICB2b2lkIHVwZChpbnQgaSwgaW50IGxxcnksIGludCBycXJ5LCBpbnQgbXlsLCBpbnQgbXlyLCBpbnQgdikgewogICAgICAgIGlmIChteXIgPCBscXJ5IHx8IG15bCA+IHJxcnkpIHJldHVybjsKICAgICAgICBpZiAobHFyeSA8PSBteWwgJiYgbXlyIDw9IHJxcnkpIHsKICAgICAgICAgICAgdHJlZVtpXSA9IHY7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGludCBtaWQgPSAobXlsICsgbXlyKSAvIDI7CiAgICAgICAgdXBkKDIgKiBpLCBscXJ5LCBycXJ5LCBteWwsIG1pZCwgdik7CiAgICAgICAgdXBkKDIgKiBpICsgMSwgbHFyeSwgcnFyeSwgbWlkICsgMSwgbXlyLCB2KTsKCiAgICAgICAgdHJlZVtpXSA9IG1lcmdlKHRyZWVbMiAqIGldLCB0cmVlWzIgKiBpICsgMV0pOwoKICAgICAgICBtbmNvdW50W2ldID0gMDsKICAgICAgICBpZiAodHJlZVtpXSA9PSB0cmVlWzIgKiBpXSkgewogICAgICAgICAgICBtbmNvdW50W2ldICs9IG1uY291bnRbMiAqIGldOwogICAgICAgIH0KICAgICAgICBpZiAodHJlZVtpXSA9PSB0cmVlWzIgKiBpICsgMV0pIHsKICAgICAgICAgICAgbW5jb3VudFtpXSArPSBtbmNvdW50WzIgKiBpICsgMV07CiAgICAgICAgfQogICAgfQoKICAgIGxsIGNvdW50KGludCBscXJ5LCBpbnQgcnFyeSwgaW50IG1uKSB7CiAgICAgICAgcmV0dXJuIGNvdW50KDEsIGxxcnksIHJxcnksIDAsIHNpemUgLSAxLCBtbik7CiAgICB9CgogICAgbGwgY291bnQoaW50IGksIGludCBscXJ5LCBpbnQgcnFyeSwgaW50IG15bCwgaW50IG15ciwgaW50IG1uKSB7CiAgICAgICAgaWYgKG15ciA8IGxxcnkgfHwgbXlsID4gcnFyeSkgcmV0dXJuIChsbCkwOwogICAgICAgIGlmIChscXJ5IDw9IG15bCAmJiBteXIgPD0gcnFyeSkgewogICAgICAgICAgICBpZiAodHJlZVtpXSA9PSBtbikgcmV0dXJuIG1uY291bnRbaV07CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgaW50IG1pZCA9IChteWwgKyBteXIpIC8gMjsKICAgICAgICByZXR1cm4gY291bnQoMiAqIGksICAgICBscXJ5LCBycXJ5LCBteWwsICAgICBtaWQsIG1uKSArCiAgICAgICAgICAgICAgIGNvdW50KDIgKiBpICsgMSwgbHFyeSwgcnFyeSwgbWlkICsgMSwgbXlyLCBtbik7CiAgICB9CiAgIAp9OwoKCgoKdm9pZCBzb2x2ZSgpIHsKICAgIGludCBuLCBtOwogICAgY2luID4+IG4gPj4gbTsKCiAgICBzZWd0cmVlIHN0OwogICAgc3QuaW5pdChuKTsKCiAgICB2ZWN0b3I8aW50PiB2KG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gdltpXTsKICAgIH0KICAgIHN0LmJ1aWxkKHYpOwoKICAgIHdoaWxlIChtLS0pIHsKICAgICAgICBpbnQgb3AgPSAyOwogICAgICAgIGNpbiA+PiBvcDsKICAgICAgICBpZiAob3AgPT0gMSkgewogICAgICAgICAgICBpbnQgaSwgdjsKICAgICAgICAgICAgY2luID4+IGkgPj4gdjsKICAgICAgICAgICAgLy9pLS07CiAgICAgICAgICAgIHN0LnVwZChpLCB2KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGludCBsLCByOwogICAgICAgICAgICBjaW4gPj4gbCA+PiByOwogICAgICAgICAgICAvL2wtLSwgci0tOwogICAgICAgICAgICByLS07CiAgICAgICAgICAgIGxsIG1uID0gc3QucXVlcnkobCwgcik7CiAgICAgICAgICAgIGxsIGNudCA9IHN0LmNvdW50KGwsIHIsIG1uKTsKICAgICAgICAgICAgY291dCA8PCBtbiA8PCAiICIgPDwgY250IDw8ICdcbic7CiAgICAgICAgfQogICAgfQp9CgoKCgoKaW50IG1haW4oKSB7CiAgICAvL2ZpbGVfZigpOwogICAgY2luLnRpZSgwKTsgY2luLnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIC8vY291dCA8PCBzZXRwcmVjaXNpb24oNikgPDwgZml4ZWQ7CgogICAgaW50IFQgPSAxOy8vIGNpbiA+PiBUOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gVDsgaSsrKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KfQ==