// ~~ icebear ~~
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
typedef pair<int, ii> iii;
template<class T>
bool minimize(T &a, const T &b) {
if (a > b) return a = b, true;
return false;
}
template<class T>
bool maximize(T &a, const T &b) {
if (a < b) return a = b, true;
return false;
}
#define FOR(i,a,b) for(int i=(a); i<=(b); ++i)
#define FORR(i,a,b) for(int i=(a); i>=(b); --i)
#define REP(i, n) for(int i=0; i<(n); ++i)
#define RED(i, n) for(int i=(n)-1; i>=0; --i)
#define MASK(i) (1LL << (i))
#define BIT(S, i) (((S) >> (i)) & 1)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define all(x) x.begin(), x.end()
#define task "rectcnt"
const int MOD = 1e9 + 7;
const int inf = 1e9 + 27092008;
const ll INF = 1e18 + 27092008;
const int N = 5000 + 5;
int numRow, numCol, numQuery, L[N], R[N], zero[N][N];
char board[N][N];
set<int> ones[N];
ll curRect;
void init(void) {
cin >> numRow >> numQuery;
numCol = numRow;
FOR(i, 1, numRow) FOR(j, 1, numCol) cin >> board[i][j];
FOR(i, 1, numRow) {
ones[i].insert(0);
ones[i].insert(numCol + 1);
FOR(j, 1, numCol) if (board[i][j] == '1')
ones[i].insert(j);
}
}
void process(void) {
FOR(i, 1, numRow) FOR(j, 1, numCol)
zero[i][j] = (board[i][j] == '0' ? 0 : zero[i - 1][j] + 1);
FOR(i, 1, numRow)
cout << curRect << '\n';
auto count_rect_contain = [&](int x, int y) {
FOR(i, 1, numRow) {
auto it1 = ones[i].lower_bound(y);
auto it2 = it1;
it1--;
L[i] = *it1 + 1;
R[i] = *it2 - 1;
}
int leftIndex = 1, rightIndex = numRow;
FORR(i, x, 1) if (L[i] > y || R[i] < y) {
leftIndex = i + 1;
break;
}
FOR(i, x, numRow) if (L[i] > y || R[i] < y) {
rightIndex = i - 1;
break;
}
ll ans = 0;
FOR(i1, leftIndex, rightIndex) {
int minR = inf, maxL = 0;
FOR(i2, i1, rightIndex) {
minimize(minR, R[i2]);
maximize(maxL, L[i2]);
if (i1 <= x && i2 >= x) ans += (y - maxL + 1) * (minR - y + 1);
}
}
return ans;
};
while(numQuery--) {
int x, y;
cin >> x >> y;
if (board[x][y] == '0') {
curRect -= count_rect_contain(x, y);
board[x][y] = '1';
ones[x].insert(y);
} else {
ones[x].erase(y);
board[x][y] = '0';
curRect += count_rect_contain(x, y);
}
cout << curRect << '\n';
cerr << curRect << '\n';
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if (fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
int tc = 1;
// cin >> tc;
while(tc--) {
init();
process();
}
return 0;
}
Ly8gfn4gaWNlYmVhciB+fgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOwp0eXBlZGVmIHBhaXI8aW50LCBpaT4gaWlpOwoKdGVtcGxhdGU8Y2xhc3MgVD4KICAgIGJvb2wgbWluaW1pemUoVCAmYSwgY29uc3QgVCAmYikgewogICAgICAgIGlmIChhID4gYikgcmV0dXJuIGEgPSBiLCB0cnVlOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCnRlbXBsYXRlPGNsYXNzIFQ+CiAgICBib29sIG1heGltaXplKFQgJmEsIGNvbnN0IFQgJmIpIHsKICAgICAgICBpZiAoYSA8IGIpIHJldHVybiBhID0gYiwgdHJ1ZTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgojZGVmaW5lIEZPUihpLGEsYikgZm9yKGludCBpPShhKTsgaTw9KGIpOyArK2kpCiNkZWZpbmUgRk9SUihpLGEsYikgZm9yKGludCBpPShhKTsgaT49KGIpOyAtLWkpCiNkZWZpbmUgUkVQKGksIG4pIGZvcihpbnQgaT0wOyBpPChuKTsgKytpKQojZGVmaW5lIFJFRChpLCBuKSBmb3IoaW50IGk9KG4pLTE7IGk+PTA7IC0taSkKI2RlZmluZSBNQVNLKGkpICgxTEwgPDwgKGkpKQojZGVmaW5lIEJJVChTLCBpKSAoKChTKSA+PiAoaSkpICYgMSkKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCksIHguZW5kKCkKI2RlZmluZSB0YXNrICJyZWN0Y250IgoKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CmNvbnN0IGludCBpbmYgPSAxZTkgKyAyNzA5MjAwODsKY29uc3QgbGwgSU5GID0gMWUxOCArIDI3MDkyMDA4Owpjb25zdCBpbnQgTiA9IDUwMDAgKyA1OwppbnQgbnVtUm93LCBudW1Db2wsIG51bVF1ZXJ5LCBMW05dLCBSW05dLCB6ZXJvW05dW05dOwpjaGFyIGJvYXJkW05dW05dOwpzZXQ8aW50PiBvbmVzW05dOwpsbCBjdXJSZWN0OwoKdm9pZCBpbml0KHZvaWQpIHsKICAgIGNpbiA+PiBudW1Sb3cgPj4gbnVtUXVlcnk7CiAgICBudW1Db2wgPSBudW1Sb3c7CiAgICBGT1IoaSwgMSwgbnVtUm93KSBGT1IoaiwgMSwgbnVtQ29sKSBjaW4gPj4gYm9hcmRbaV1bal07CiAgICBGT1IoaSwgMSwgbnVtUm93KSB7CiAgICAgICAgb25lc1tpXS5pbnNlcnQoMCk7CiAgICAgICAgb25lc1tpXS5pbnNlcnQobnVtQ29sICsgMSk7CiAgICAgICAgRk9SKGosIDEsIG51bUNvbCkgaWYgKGJvYXJkW2ldW2pdID09ICcxJykKICAgICAgICAgICAgb25lc1tpXS5pbnNlcnQoaik7CiAgICB9Cn0KCnZvaWQgcHJvY2Vzcyh2b2lkKSB7CiAgICBGT1IoaSwgMSwgbnVtUm93KSBGT1IoaiwgMSwgbnVtQ29sKQogICAgICAgIHplcm9baV1bal0gPSAoYm9hcmRbaV1bal0gPT0gJzAnID8gMCA6IHplcm9baSAtIDFdW2pdICsgMSk7CiAgICBGT1IoaSwgMSwgbnVtUm93KQoKICAgIGNvdXQgPDwgY3VyUmVjdCA8PCAnXG4nOwoKICAgIGF1dG8gY291bnRfcmVjdF9jb250YWluID0gWyZdKGludCB4LCBpbnQgeSkgewogICAgICAgIEZPUihpLCAxLCBudW1Sb3cpIHsKICAgICAgICAgICAgYXV0byBpdDEgPSBvbmVzW2ldLmxvd2VyX2JvdW5kKHkpOwogICAgICAgICAgICBhdXRvIGl0MiA9IGl0MTsKICAgICAgICAgICAgaXQxLS07CiAgICAgICAgICAgIExbaV0gPSAqaXQxICsgMTsKICAgICAgICAgICAgUltpXSA9ICppdDIgLSAxOwogICAgICAgIH0KCiAgICAgICAgaW50IGxlZnRJbmRleCA9IDEsIHJpZ2h0SW5kZXggPSBudW1Sb3c7CiAgICAgICAgRk9SUihpLCB4LCAxKSBpZiAoTFtpXSA+IHkgfHwgUltpXSA8IHkpIHsKICAgICAgICAgICAgbGVmdEluZGV4ID0gaSArIDE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgRk9SKGksIHgsIG51bVJvdykgaWYgKExbaV0gPiB5IHx8IFJbaV0gPCB5KSB7CiAgICAgICAgICAgIHJpZ2h0SW5kZXggPSBpIC0gMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBsbCBhbnMgPSAwOwogICAgICAgIEZPUihpMSwgbGVmdEluZGV4LCByaWdodEluZGV4KSB7CiAgICAgICAgICAgIGludCBtaW5SID0gaW5mLCBtYXhMID0gMDsKICAgICAgICAgICAgRk9SKGkyLCBpMSwgcmlnaHRJbmRleCkgewogICAgICAgICAgICAgICAgbWluaW1pemUobWluUiwgUltpMl0pOwogICAgICAgICAgICAgICAgbWF4aW1pemUobWF4TCwgTFtpMl0pOwogICAgICAgICAgICAgICAgaWYgKGkxIDw9IHggJiYgaTIgPj0geCkgYW5zICs9ICh5IC0gbWF4TCArIDEpICogKG1pblIgLSB5ICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFuczsKICAgIH07CgogICAgd2hpbGUobnVtUXVlcnktLSkgewogICAgICAgIGludCB4LCB5OwogICAgICAgIGNpbiA+PiB4ID4+IHk7CiAgICAgICAgaWYgKGJvYXJkW3hdW3ldID09ICcwJykgewogICAgICAgICAgICBjdXJSZWN0IC09IGNvdW50X3JlY3RfY29udGFpbih4LCB5KTsKICAgICAgICAgICAgYm9hcmRbeF1beV0gPSAnMSc7CiAgICAgICAgICAgIG9uZXNbeF0uaW5zZXJ0KHkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG9uZXNbeF0uZXJhc2UoeSk7CiAgICAgICAgICAgIGJvYXJkW3hdW3ldID0gJzAnOwogICAgICAgICAgICBjdXJSZWN0ICs9IGNvdW50X3JlY3RfY29udGFpbih4LCB5KTsKICAgICAgICB9CiAgICAgICAgY291dCA8PCBjdXJSZWN0IDw8ICdcbic7CiAgICAgICAgY2VyciA8PCBjdXJSZWN0IDw8ICdcbic7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgaWYgKGZvcGVuKHRhc2siLmlucCIsICJyIikpIHsKICAgICAgICBmcmVvcGVuKHRhc2siLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4odGFzayIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgaW50IHRjID0gMTsKLy8gICAgY2luID4+IHRjOwogICAgd2hpbGUodGMtLSkgewogICAgICAgIGluaXQoKTsKICAgICAgICBwcm9jZXNzKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQoK