#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using pii = pair<ull, ull>;
template<typename X, typename Y>
bool chmax(X& a, Y b) { return (a < b) ? a = b, 1 : 0; }
template<typename X, typename Y>
bool chmin(X& a, Y b) { return (a > b) ? a = b, 1 : 0; }
const int N = 1e5+5;
int n, q, a[N];
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
map<int, ull> H, _H;
ull bit[N], _bit[N];
void init(int x) {
if (H.find(x) == H.end()) {
H[x] = rng();
_H[x] = rng();
}
}
void add(int p, int v, int sign) {
for (; p <= n; p += p & -p) {
bit[p] += H[v] * sign;
_bit[p] += _H[v] * sign;
}
}
pii get(int p) {
ull res = 0, _res = 0;
for (; p > 0; p -= p & -p) {
res += bit[p];
_res += _bit[p];
}
return {res, _res};
}
pii query(int l, int r) {
pii x = get(l - 1), y = get(r);
return {y.first - x.first, y.second - x.second};
}
void solve() {
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> a[i]; init(a[i]);
add(i, a[i], 1);
}
while (q--) {
int type; cin >> type;
if (type == 1) {
int k, x; cin >> k >> x;
add(k, a[k], -1);
a[k] = x; init(x);
add(k, a[k], 1);
} else if (type == 2) {
int l, r, u, v; cin >> l >> r >> u >> v;
if (r - l != v - u) {
cout << "NO\n";
continue;
}
pii h1 = query(l, r), h2 = query(u, v);
if (h1.first == h2.first && h1.second == h2.second) cout << "YES\n";
else cout << "NO\n";
}
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
#define TASK "ISOMERS"
if (fopen(TASK".INP", "r")) {
freopen(TASK".INP", "r", stdin);
freopen(TASK".OUT", "w", stdout);
}
int tests = 1; // cin >> tests;
while (tests--) solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnVzaW5nIGxsID0gbG9uZyBsb25nOwp1c2luZyB1bGwgPSB1bnNpZ25lZCBsb25nIGxvbmc7CnVzaW5nIHBpaSA9IHBhaXI8dWxsLCB1bGw+OwoKdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KYm9vbCBjaG1heChYJiBhLCBZIGIpIHsgcmV0dXJuIChhIDwgYikgPyBhID0gYiwgMSA6IDA7IH0KdGVtcGxhdGU8dHlwZW5hbWUgWCwgdHlwZW5hbWUgWT4KYm9vbCBjaG1pbihYJiBhLCBZIGIpIHsgcmV0dXJuIChhID4gYikgPyBhID0gYiwgMSA6IDA7IH0KCmNvbnN0IGludCBOID0gMWU1KzU7CgppbnQgbiwgcSwgYVtOXTsKCm10MTk5MzdfNjQgcm5nKGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CgptYXA8aW50LCB1bGw+IEgsIF9IOwoKdWxsIGJpdFtOXSwgX2JpdFtOXTsKCnZvaWQgaW5pdChpbnQgeCkgewogICAgaWYgKEguZmluZCh4KSA9PSBILmVuZCgpKSB7CiAgICAgICAgSFt4XSA9IHJuZygpOwogICAgICAgIF9IW3hdID0gcm5nKCk7CiAgICB9Cn0KCnZvaWQgYWRkKGludCBwLCBpbnQgdiwgaW50IHNpZ24pIHsKICAgIGZvciAoOyBwIDw9IG47IHAgKz0gcCAmIC1wKSB7CiAgICAgICAgYml0W3BdICs9IEhbdl0gKiBzaWduOwogICAgICAgIF9iaXRbcF0gKz0gX0hbdl0gKiBzaWduOwogICAgfQp9CgpwaWkgZ2V0KGludCBwKSB7CiAgICB1bGwgcmVzID0gMCwgX3JlcyA9IDA7CiAgICBmb3IgKDsgcCA+IDA7IHAgLT0gcCAmIC1wKSB7CiAgICAgICAgcmVzICs9IGJpdFtwXTsKICAgICAgICBfcmVzICs9IF9iaXRbcF07CiAgICB9CiAgICByZXR1cm4ge3JlcywgX3Jlc307Cn0KCnBpaSBxdWVyeShpbnQgbCwgaW50IHIpIHsKICAgIHBpaSB4ID0gZ2V0KGwgLSAxKSwgeSA9IGdldChyKTsKICAgIHJldHVybiB7eS5maXJzdCAtIHguZmlyc3QsIHkuc2Vjb25kIC0geC5zZWNvbmR9Owp9Cgp2b2lkIHNvbHZlKCkgewogICAgY2luID4+IG4gPj4gcTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNpbiA+PiBhW2ldOyBpbml0KGFbaV0pOwogICAgICAgIGFkZChpLCBhW2ldLCAxKTsKICAgIH0KICAgIHdoaWxlIChxLS0pIHsKICAgICAgICBpbnQgdHlwZTsgY2luID4+IHR5cGU7CiAgICAgICAgaWYgKHR5cGUgPT0gMSkgewogICAgICAgICAgICBpbnQgaywgeDsgY2luID4+IGsgPj4geDsKICAgICAgICAgICAgYWRkKGssIGFba10sIC0xKTsKICAgICAgICAgICAgYVtrXSA9IHg7IGluaXQoeCk7CiAgICAgICAgICAgIGFkZChrLCBhW2tdLCAxKTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gMikgewogICAgICAgICAgICBpbnQgbCwgciwgdSwgdjsgY2luID4+IGwgPj4gciA+PiB1ID4+IHY7CiAgICAgICAgICAgIGlmIChyIC0gbCAhPSB2IC0gdSkgewogICAgICAgICAgICAgICAgY291dCA8PCAiTk9cbiI7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwaWkgaDEgPSBxdWVyeShsLCByKSwgaDIgPSBxdWVyeSh1LCB2KTsKICAgICAgICAgICAgaWYgKGgxLmZpcnN0ID09IGgyLmZpcnN0ICYmIGgxLnNlY29uZCA9PSBoMi5zZWNvbmQpIGNvdXQgPDwgIllFU1xuIjsKICAgICAgICAgICAgZWxzZSBjb3V0IDw8ICJOT1xuIjsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCk7CgogICAgI2RlZmluZSBUQVNLICJJU09NRVJTIgogICAgaWYgKGZvcGVuKFRBU0siLklOUCIsICJyIikpIHsKICAgICAgICBmcmVvcGVuKFRBU0siLklOUCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oVEFTSyIuT1VUIiwgInciLCBzdGRvdXQpOwogICAgfQoKICAgIGludCB0ZXN0cyA9IDE7IC8vIGNpbiA+PiB0ZXN0czsKICAgIHdoaWxlICh0ZXN0cy0tKSBzb2x2ZSgpOwoKICAgIHJldHVybiAwOwp9Cg==