#include <bits/stdc++.h>
 #define endl "\n"

using namespace std;

using ll = long long;
const ll inf =1e12;
void solve()
{
    ll j,tren,broj,brojac;
    ll n,q,i,br,res=0 ,oduz1,oduz2,l,r=0;
    string s;
    cin >> n >> q;
    cin >> s;
    for(i=0;i<n;i++)
    {
        if(s[i]!='?')
        {
            r=1;
        }
    }
    
    if(r==0)
    {
        while(q--)
        {
            cin >> l >> r;
            res=r-l+1;
            cout << (res/2) * ((res+1)/2) << endl;
        }
        return;
    }
    for(i=0;i<n;i++)
    {
        if(s[i]=='?')
        {
            r=2;
        }
    }
    if(r==1)
    {
        vector<ll>suf(n),pref(n);
        br=0;
        res=0;
        for(i=0;i<n;i++)
        {
            if(s[i]=='6')
            {
                br++;
            }
            else
            {
                res+=br;
            }
            pref[i]=res;
        }
        br=0;
        res=0;
        for(i=n-1;i>=0;i--)
        {
            if(s[i]=='7')
            {
                br++;
            }
            else
            {
                res+=br;
            }
            suf[i]=res;
        }
        res=0;
        br=0;
        vector<ll>pref6(n),suf7(n);
        for(i=0;i<n;i++)
        {
            pref6[i]=(s[i]=='6');

            if(i!=0)
            {
                pref6[i]+=pref6[i-1];

            }
        }
        for(i=n-1;i>=0;i--)
        {
            suf7[i]=(s[i]=='7');
            if(i!=n-1)
            {
                suf7[i]+=suf7[i+1];
            }
        }
        br=0;
        for(i=0;i<n;i++)
        {
            if(s[i]=='6')
            {
                br++;

            }
            else
            {
                res+=br;
            }
        }
      //  cout << res << endl;
        while(q--)
        {
            cin >> l >> r;
            l--;
            r--;
            oduz1=0;
            oduz2=0;
            if(l!=0)
            {
                 oduz1=pref6[l-1]*suf7[l-1]+pref[l];
            //     cout << pref6[l-1] << " " << suf7[l-1] << endl;
            }
            if(r!=n-1)
            {
                ll oduzz=0;
                if(l!=0)
                {
                    oduzz=pref6[l-1];
                }
                oduz2=suf7[r+1]*(pref6[r]-oduzz)+suf[r];
               //  cout << pref6[r+1] << " " << suf7[r+1] << endl;
            }
            cout << res-oduz1-oduz2 << endl;
        }



        return;
    }
    while(q--)
    {
        cin >> l >> r;
        l--;
        r--;
        br=0;
        for(i=l;i<=r;i++)
        {
            if(s[i]=='?')
            {
                br++;
            }
        }
        res=0;
        for(j=0;j<=br;j++)
        {
            tren=0;
            broj=0;
            brojac=0;
            for(i=l;i<=r;i++)
            {
                if(s[i]=='7')
                {
                    tren+=broj;
                }
                else if(s[i]=='6')
                {
                    broj++;
                }
                else if(brojac==j)
                {
                    tren+=broj;
                }
                else
                {
                    broj++;
                    brojac++;
                }
            }
            res=max(res,tren);
        }
        cout << res << endl;
    }


}



int main()
{
    ios_base::sync_with_stdio(false);
   cin.tie(NULL);
    ll t=1;
    //cin >> t;
    while(t--)
    {
        solve();
    }
}