#include using namespace std; #define sc cerr #define qlog(x) {sc<<#x<<" = "<<(x)<<"\n";} #define rep(i,l,r) for(ll i=(l);i<=(r);i++) #define irep(i,l,r) for(ll i=(l);i>=(r);i--) #define qloga(a,l,r) {sc<<#a<<" : "; rep(I,l,r){sc<<(a)[I]<<" ";}sc<<"\n";} #define qlogSTL(a) {sc<<#a<<" : "; for(const auto &I:(a)){sc<<(I)<<" ";}sc<<"\n";} typedef long long ll; typedef unsigned long long ull; constexpr int N=4e5+10; int n,Q; namespace ST{ #define ls(u) ((u)<<1) #define rs(u) ((u)<<1|1) ll sum[N]; int oddcnt[N]; bool lz1[N],rev[N]; ll lz0[N],lz2[N]; void pushup(int u){ oddcnt[u]=oddcnt[ls(u)]+oddcnt[rs(u)]; sum[u]=sum[ls(u)]+sum[rs(u)]; } void lazyadd(ll x,int u,int l,int r){ if(lz1[u]){ lz2[u]+=x; }else{ lz0[u]+=x; } if(x&1)oddcnt[u]=(r-l+1)-oddcnt[u]; sum[u]+=x*(r-l+1); } void lazyzip(int u,int l,int r){ lz1[u]=1; lz0[u]^=lz2[u]; lz2[u]=0; sum[u]=oddcnt[u]; } int pushdw(int u,int l,int r){ //sc<>n>>Q; rep(i,1,n){ ll x; cin>>x; add(i,i,x); } while(Q--){ int opt,l,r; cin>>opt>>l>>r; //rep(i,1,n){cout<>x; add(l,r,x); }else if(opt==1){ zip(l,r); }else{ cout<