#include<bits/stdc++.h>
#define ll long long
#define ls(x) ((x)<<1)
#define rs(x) ((x)<<1|1)
using namespace std;
int tree[250005<<3][10],tag[250005<<3],s[250005];
#define rotate(ii) {\
if(tag[ii]){\
int jcq=tree[ii][9];\
tree[ii][9]=tree[ii][8];\
tree[ii][8]=tree[ii][7];\
tree[ii][7]=tree[ii][6];\
tree[ii][6]=tree[ii][5];\
tree[ii][5]=tree[ii][4];\
tree[ii][4]=tree[ii][3];\
tree[ii][3]=tree[ii][2];\
tree[ii][2]=tree[ii][1];\
tree[ii][1]=tree[ii][0];\
tree[ii][0]=jcq;\
}\
}
void push_down(int i){
int jcq;
tag[ls(i)]+=tag[i];
tag[rs(i)]+=tag[i];
if(tag[ls(i)]>=10)tag[ls(i)]-=10;
if(tag[rs(i)]>=10)tag[rs(i)]-=10;
while(tag[i]){
tag[i]--;
rotate(ls(i));
rotate(rs(i));
}
}
#define updata(ii) {\
tree[ii][0]=tree[ls(ii)][0]+tree[rs(ii)][0];\
tree[ii][1]=tree[ls(ii)][1]+tree[rs(ii)][1];\
tree[ii][2]=tree[ls(ii)][2]+tree[rs(ii)][2];\
tree[ii][3]=tree[ls(ii)][3]+tree[rs(ii)][3];\
tree[ii][4]=tree[ls(ii)][4]+tree[rs(ii)][4];\
tree[ii][5]=tree[ls(ii)][5]+tree[rs(ii)][5];\
tree[ii][6]=tree[ls(ii)][6]+tree[rs(ii)][6];\
tree[ii][7]=tree[ls(ii)][7]+tree[rs(ii)][7];\
tree[ii][8]=tree[ls(ii)][8]+tree[rs(ii)][8];\
tree[ii][9]=tree[ls(ii)][9]+tree[rs(ii)][9];\
}
void build(int l,int r,int i){
if(l==r){
tree[i][s[l]]=1;
return;
}
int mid=(l+r)>>1;
build(l,mid,ls(i));
build(mid+1,r,rs(i));
updata(i);
//cout<<l<<' '<<r<<' '<<tree[ls(i)][1]+tree[rs(i)][1]<<' '<<tree[ls(i)][2]+tree[rs(i)][2]<<endl;
}
void sett(int l,int r,int i,int tl,int tr){
push_down(i);
if(tl>=l&&tr<=r){
tag[i]++;
if(tag[i]>=10)tag[i]-=10;
rotate(i);
return;
}
int mid=(tl+tr)>>1;
if(l<=mid)sett(l,r,ls(i),tl,mid);
if(r>mid)sett(l,r,rs(i),mid+1,tr);
updata(i);
}
int gett(int l,int r,int i,int tl,int tr){
push_down(i);
if(l<=tl&&tr<=r){
return tree[i][1]+(tree[i][2]<<1)+(tree[i][3]<<1)+tree[i][3]+(tree[i][4]<<2)+(tree[i][5]<<2)+tree[i][5]+(tree[i][6]<<2)+(tree[i][6]<<1)+(tree[i][7]<<3)-tree[i][7]+(tree[i][8]<<3)+(tree[i][9]<<3)+tree[i][9];
}
int mid=(tl+tr)>>1,anss=0;
if(l<=mid)anss+=gett(l,r,ls(i),tl,mid);
if(r>mid)anss+=gett(l,r,rs(i),mid+1,tr);
return anss;
}
int main(){
ios::sync_with_stdio(0);
int n,m;
cin>>n>>m;
char c;
for(int i=1;i<=n;i++){
cin>>c;
s[i]=c^'0';
}
build(1,n,1);
int l,r;
while(m--){
cin>>l>>r;
cout<<gett(l,r,1,1,n)<<'\n';
sett(l,r,1,1,n);
}
}
rt,只过了第一个点