///HBTN
#include <bits/stdc++.h>
#define int long long
#define N (int) 1e6 + 5
#define acceleration ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
int n, m, q, res = 0;
int a[N], T[4 * N], P[4 * N];
void update(int id, int l, int r, int pos, int val)
{
if(pos < l || pos > r) return;
if(l == r)
{
T[id] = val;
P[id] = val;
a[pos] = val;
return;
}
int mid = (l + r) >> 1;
update(id * 2, l, mid, pos, val);
update(id * 2 + 1, mid + 1, r, pos, val);
T[id] = min(T[id * 2], T[id * 2 + 1]);
P[id] = max(P[id * 2], P[id * 2 + 1]);
}
int get(int id, int l, int r, int u, int v)
{
if(v < l || u > r) return 1e18;
if(u <= l && v >= r) return T[id];
int mid = (l + r) >> 1;
int t1 = get(id * 2, l, mid, u, v);
int t2 = get(id * 2 + 1, mid + 1, r, u, v);
return min(t1, t2);
}
int get_max(int id, int l, int r, int u, int v)
{
if(v < l || u > r) return -1e18;
if(u <= l && v >= r) return P[id];
int mid = (l + r) >> 1;
int t1 = get_max(id * 2, l, mid, u, v);
int t2 = get_max(id * 2 + 1, mid + 1, r, u, v);
return max(t1, t2);
}
signed main()
{
acceleration
#define TASK "HBTN"
if(fopen(TASK".INP","r"))
{
freopen(TASK".INP", "r", stdin);
freopen(TASK".OUT", "w", stdout);
}
cin >> n >> m;
for(int i = 1; i <= n; i++)
{
cin >> a[i];
update(1, 1, n, i, a[i]);
}
while(m--)
{
int x, y, type; cin >> type >> x >> y;
if(type == 1)
{
int tmp_x = a[x];
int tmp_y = a[y];
update(1, 1, n, x, tmp_y);
update(1, 1, n, y, tmp_x);
}
else
{
int Min = get(1, 1, n, x, y);
int Max = get_max(1, 1, n, x, y);
if(Max - Min == y - x) cout << "YES\n";
else cout << "NO\n";
}
}
}
Ly8vSEJUTgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgTiAoaW50KSAxZTYgKyA1CiNkZWZpbmUgYWNjZWxlcmF0aW9uIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBuLCBtLCBxLCByZXMgPSAwOwppbnQgYVtOXSwgVFs0ICogTl0sIFBbNCAqIE5dOwoKCnZvaWQgdXBkYXRlKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgcG9zLCBpbnQgdmFsKQp7CiAgICBpZihwb3MgPCBsIHx8IHBvcyA+IHIpIHJldHVybjsKICAgIGlmKGwgPT0gcikKICAgIHsKICAgICAgICBUW2lkXSA9IHZhbDsKICAgICAgICBQW2lkXSA9IHZhbDsKICAgICAgICBhW3Bvc10gPSB2YWw7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGludCBtaWQgPSAobCArIHIpID4+IDE7CiAgICB1cGRhdGUoaWQgKiAyLCBsLCBtaWQsIHBvcywgdmFsKTsKICAgIHVwZGF0ZShpZCAqIDIgKyAxLCBtaWQgKyAxLCByLCBwb3MsIHZhbCk7CgogICAgVFtpZF0gPSBtaW4oVFtpZCAqIDJdLCBUW2lkICogMiArIDFdKTsKICAgIFBbaWRdID0gbWF4KFBbaWQgKiAyXSwgUFtpZCAqIDIgKyAxXSk7Cn0KCmludCBnZXQoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdikKewogICAgaWYodiA8IGwgfHwgdSA+IHIpIHJldHVybiAxZTE4OwogICAgaWYodSA8PSBsICYmIHYgPj0gcikgcmV0dXJuIFRbaWRdOwoKICAgIGludCBtaWQgPSAobCArIHIpID4+IDE7CiAgICBpbnQgdDEgPSBnZXQoaWQgKiAyLCBsLCBtaWQsIHUsIHYpOwogICAgaW50IHQyID0gZ2V0KGlkICogMiArIDEsIG1pZCArIDEsIHIsIHUsIHYpOwoKICAgIHJldHVybiBtaW4odDEsIHQyKTsKfQoKaW50IGdldF9tYXgoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdikKewogICAgaWYodiA8IGwgfHwgdSA+IHIpIHJldHVybiAtMWUxODsKICAgIGlmKHUgPD0gbCAmJiB2ID49IHIpIHJldHVybiBQW2lkXTsKCgogICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgIGludCB0MSA9IGdldF9tYXgoaWQgKiAyLCBsLCBtaWQsIHUsIHYpOwogICAgaW50IHQyID0gZ2V0X21heChpZCAqIDIgKyAxLCBtaWQgKyAxLCByLCB1LCB2KTsKCiAgICByZXR1cm4gbWF4KHQxLCB0Mik7Cn0KCnNpZ25lZCBtYWluKCkKewogICAgYWNjZWxlcmF0aW9uCiAgICAjZGVmaW5lIFRBU0sgIkhCVE4iCiAgICBpZihmb3BlbihUQVNLIi5JTlAiLCJyIikpCiAgICB7CiAgICAgICAgZnJlb3BlbihUQVNLIi5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKFRBU0siLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICB1cGRhdGUoMSwgMSwgbiwgaSwgYVtpXSk7CiAgICB9CgogICAgd2hpbGUobS0tKQogICAgewogICAgICAgIGludCB4LCB5LCB0eXBlOyBjaW4gPj4gdHlwZSA+PiB4ID4+IHk7CiAgICAgICAgaWYodHlwZSA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHRtcF94ID0gYVt4XTsKICAgICAgICAgICAgaW50IHRtcF95ID0gYVt5XTsKICAgICAgICAgICAgdXBkYXRlKDEsIDEsIG4sIHgsIHRtcF95KTsKICAgICAgICAgICAgdXBkYXRlKDEsIDEsIG4sIHksIHRtcF94KTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgaW50IE1pbiA9IGdldCgxLCAxLCBuLCB4LCB5KTsKICAgICAgICAgICAgaW50IE1heCA9IGdldF9tYXgoMSwgMSwgbiwgeCwgeSk7CgogICAgICAgICAgICBpZihNYXggLSBNaW4gPT0geSAtIHgpIGNvdXQgPDwgIllFU1xuIjsKICAgICAgICAgICAgZWxzZSBjb3V0IDw8ICJOT1xuIjsKICAgICAgICB9CiAgICB9CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCn0K