#include #include using namespace std; unsigned long long isqrt_aux(int c,unsigned long long n){ if (c == 0){ return 1; } else { int k = (c - 1) / 2; unsigned long long a = isqrt_aux(c / 2, n >> (2*k + 2)); return (a << k) + (n >> (k+2)) / a; } } unsigned long isqrt(unsigned long long n){ if (n == 0){ return 0; } else { unsigned long long a = isqrt_aux(( 63 - __builtin_clzll(n)) / 2, n); return (n <= a * a - 1 ? a - 1 : a); } } using ll=long long; const int l=33; struct S{ int now=0; array val; ll sz; }; unordered_map> mp; array ar; array calc(ll x){ if (mp.count(x)) return mp[x]; array ret=ar; ret[0]=x; for (int i=1;i(); for (int i=0;i>n>>q; vector a(n); vector v(n); for (int i=0;i>a[i]; v[i]={0,calc(a[i]),1}; } atcoder::lazy_segtree seg(v); while (q--){ int t; cin>>t; if (t==0){ int l,r; cin>>l>>r; auto p=seg.prod(l,r); cout<>l>>r>>x; seg.apply(l,r,F{0,x}); } if (t==2){ int l,r; cin>>l>>r; seg.apply(l,r,F{1,-1}); } } }