#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; int l=40; struct S{ int now=0; vector val; ll sz; }; vector calc(ll x){ vector ret(l); ret[0]=x; for (int i=1;i(l); for (int i=0;i(l,0),0};} struct F{ ll cnt; ll x; }; S mapping(F f,S x){ if (f.x!=-1){ x.val=calc(f.x); 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}); } } }