#include using namespace std; using ll = long long; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; if(!(cin >> n >> m)) return 0; vector a(n+1); for(int i = 1; i <= n; i++){ cin >> a[i]; } while(m--){ int op; cin >> op; if(op == 1){ int l, r; ll x, y; cin >> l >> r >> x >> y; for(int i = l; i <= r; i++){ if(a[i] == x) a[i] = y; } } else if(op == 2){ int l, r, k; cin >> l >> r >> k; // 收集区间 [l,r] 内出现的所有正整数 unordered_set S; S.reserve(r-l+1); for(int i = l; i <= r; i++){ if(a[i] > 0) S.insert(a[i]); } // 从 1 开始枚举缺失的正整数,找到第 k 个 int cnt = 0; ll mex = 1; while(true){ if(S.find(mex) == S.end()){ cnt++; if(cnt == k){ cout << mex << "\n"; break; } } mex++; } } else{ // 不存在的操作类型,跳过输入 } } return 0; }