14 dat.assign(__lg(n)+1,vector<Type>(n));
16 for(
int i=1; i<dat.size(); i++) {
18 for(
int j=0; j<n; j+=w<<1) {
21 for(
int k=t-2; k>=j; k--) dat[i][k]=Semigroup::op(v[k],dat[i][k+1]);
24 for(
int k=t+1; k<min(j+(w<<1),n); k++) dat[i][k]=Semigroup::op(dat[i][k-1],v[k]);