#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ll long long int #define M 1000000007 using namespace std; ll cont = 0; char getChar(char c,int t){ if(c+t<='z') return c+t; else return 'a'+t-('z'-c+1); } bool isPalindromic(string s){ int cnt[26]={0}; for(int i=0;i> n >> q; string s; cin >> s; int type; for(int a0 = 0; a0 < q; a0++){ // your code goes here cin>>type; if(type == 1){ cin>>i>>j>>t; t = t%26; for(int l=i;l<=j;l++){ s[l]=getChar(s[l],t); } }else{ cin>>i>>j; cont=0; getSubsets(s,n,i,j,i,""); cout<<(cont-1)%M<