#include #define pb push_back #define sqr(x) (x)*(x) #define sz(a) int(a.size()) #define reset(a,b) memset(a,b,sizeof(a)) #define oo 1000000007 using namespace std; typedef pair pii; typedef long long ll; const int maxn=100007; struct ITNode{ int sum[26],t; } IT[maxn*4]; int n,q; char s[maxn]; ll p2[maxn]; void initIT(int i, int l, int r){ reset(IT[i].sum, 0); IT[i].t=0; if(l==r){ IT[i].sum[s[l]-'a']=1; return; } int mid=(l+r)/2; initIT(i*2,l,mid); initIT(i*2+1,mid+1,r); for(int x=0; x<26; ++x) IT[i].sum[x] = (IT[i*2].sum[x] + IT[i*2+1].sum[x]); } int tmp[26]; void lazyUpdate(int i, int l, int r){ if(IT[i].t != 0){ for(int x=0; x<26; ++x) tmp[(x+IT[i].t)%26] = IT[i].sum[x]; for(int x=0; x<26; ++x) IT[i].sum[x] = tmp[x]; if(l