#include"../../../template.h"structNode{llMax,sum;Node(){}Node(intval){Max=val;sum=val;}Nodeoperator+(constNode&b){Noderes;res.Max=max(Max,b.Max);res.sum=sum+b.sum;returnres;}};// range mod, sum query// point assign queryclassSegTreeBeats{public:vector<Node>tree;SegTreeBeats(intn):tree(4*n){}voidbuild(intid,intl,intr,intu,intv,intval){if(l>v||r<u)return;if(u<=l&&r<=v){tree[id]=Node(val);return;}intmid=(l+r)>>1;build(id*2,l,mid,u,v,val);build(id*2+1,mid+1,r,u,v,val);tree[id]=tree[id*2]+tree[id*2+1];}voidupdateMod(intid,intl,intr,intu,intv,intx){if(l>v||r<u)return;if(tree[id].Max<x)return;if(l==r){tree[id].Max%=x;tree[id].sum=tree[id].Max;return;}intmid=(l+r)>>1;updateMod(id*2,l,mid,u,v,x);updateMod(id*2+1,mid+1,r,u,v,x);tree[id]=tree[id*2]+tree[id*2+1];}llgetSum(intid,intl,intr,intu,intv){if(l>v||r<u)return0;if(u<=l&&r<=v)returntree[id].sum;intmid=(l+r)>>1;llt1=getSum(id*2,l,mid,u,v);llt2=getSum(id*2+1,mid+1,r,u,v);returnt1+t2;}};
#line 2 "template.h"
#include<bits/stdc++.h>usingnamespacestd;#define ll long long
#define MOD (ll)(1e9+7)
#define all(x) (x).begin(),(x).end()
#define unique(x) x.erase(unique(all(x)), x.end())
#define INF32 ((1ull<<31)-1)
#define INF64 ((1ull<<63)-1)
#define inf (ll)1e18
#define vi vector<int>
#define pii pair<int, int>
#define pll pair<ll, ll>
#define fi first
#define se second
constintmod=998244353;voidsolve();intmain(){ios_base::sync_with_stdio(false);cin.tie(NULL);// cin.exceptions(cin.failbit);// int t; cin >> t;// while(t--)solve();cerr<<"\nTime run: "<<1000*clock()/CLOCKS_PER_SEC<<"ms"<<'\n';return0;}#line 2 "DataStructure/SegTree/SegTreeBeats/SegTreeBeats1.h"
structNode{llMax,sum;Node(){}Node(intval){Max=val;sum=val;}Nodeoperator+(constNode&b){Noderes;res.Max=max(Max,b.Max);res.sum=sum+b.sum;returnres;}};// range mod, sum query// point assign queryclassSegTreeBeats{public:vector<Node>tree;SegTreeBeats(intn):tree(4*n){}voidbuild(intid,intl,intr,intu,intv,intval){if(l>v||r<u)return;if(u<=l&&r<=v){tree[id]=Node(val);return;}intmid=(l+r)>>1;build(id*2,l,mid,u,v,val);build(id*2+1,mid+1,r,u,v,val);tree[id]=tree[id*2]+tree[id*2+1];}voidupdateMod(intid,intl,intr,intu,intv,intx){if(l>v||r<u)return;if(tree[id].Max<x)return;if(l==r){tree[id].Max%=x;tree[id].sum=tree[id].Max;return;}intmid=(l+r)>>1;updateMod(id*2,l,mid,u,v,x);updateMod(id*2+1,mid+1,r,u,v,x);tree[id]=tree[id*2]+tree[id*2+1];}llgetSum(intid,intl,intr,intu,intv){if(l>v||r<u)return0;if(u<=l&&r<=v)returntree[id].sum;intmid=(l+r)>>1;llt1=getSum(id*2,l,mid,u,v);llt2=getSum(id*2+1,mid+1,r,u,v);returnt1+t2;}};