#include <iostream>
#include <string>

using namespace std; // 01 niz

string nuznoMenjanje(string m, long l, long r){
    for(long i = l - 1; i < r; i++){
        if(m[i] == '0') m.replace(i, 1, "1");
        else m.replace(i, 1, "0");
    }
    return m;
}

int vrednostOdNiza(string s, int i, int j){
    long jedinice = 0;
    for(int l = i; l < j; l++) if(s[l] == '1') jedinice++;
    long nule = j - i - jedinice;
    return jedinice - nule;
}

string optimalniPodniz(string s, long c){
    int mai = 0,mij = 0,ma = 0,t = s.length();

    for(int i = 0; i < t; i++) for(int j = i + 1; j < t; j++){
        int vrednost = vrednostOdNiza(s, i, j);
        if(vrednost < 0) break;
        else if ((vrednost > ma)&&(vrednost < c)) {
            mai = i; mij = j; ma = vrednost;
        }
    }
    if(mai == 0 && mij == 0) return "";
    return nuznoMenjanje(s, mai, mij);
}

long countOnes(string m, long n){
    long jedinice = 0;
    for(int i = 0; i < n; i++){
        if(m[i] == '1') jedinice++;
    }
    return jedinice;
}

int main()
{
    long n, c, q;
    string s, ts, ls;
    cin >> n >> c >> q;
    cin >> s;
    long primorano[n][2];
    for(int i = 0; i < q; i++) cin >> primorano[i][0] >> primorano[i][1];
    long zbir = 0;
    long jedinice, nule;
    for(int i = 0; i < q; i++){
        s = nuznoMenjanje(s, primorano[i][0], primorano[i][1]);
        ts = s;
        jedinice = countOnes(s,n);
        nule = n - jedinice;
        if(jedinice <= c) zbir += jedinice;
        else {
            ls = s;
            ts = s;
            while(ts != ""){
                ts = optimalniPodniz(ts, c);
                if(ts != ls) zbir += c;
                ls = ts;
            }
            jedinice = countOnes(s, n);
            zbir += jedinice;
        }
        cout << zbir << endl;
        zbir = 0;
    }
    return 0;
}