#include <bits/stdc++.h>
using namespace std;
const int MAXN = 4e5 + 5;
inline int input() {
  char c = getchar();
  int o;
  while (c > 57 || c < 48) c = getchar();
  for (o = 0; c > 47 && c < 58; c = getchar())
    o = (o << 1) + (o << 3) + (c - 48);
  return o;
}
set<pair<int, int> > mk;
int c[MAXN << 3], w[MAXN << 3], mx[MAXN << 3], y, v;
void PD(int o, int l, int r) {
  if (l == r) {
    w[o] = 0;
    return;
  }
  mx[(o << 1)] += w[o];
  mx[(o << 1 | 1)] += w[o];
  c[(o << 1)] += w[o];
  c[(o << 1 | 1)] += w[o];
  w[(o << 1)] += w[o];
  w[(o << 1 | 1)] += w[o];
  w[o] = 0;
}
void Init(int o, int l, int r) {
  if (l == r) {
    mx[o] = r - 1;
    return;
  }
  Init((o << 1), l, ((l + r) >> 1));
  Init((o << 1 | 1), ((l + r) >> 1) + 1, r);
}
void Add(int o, int l, int r) {
  if (w[o]) PD(o, l, r);
  if (l == r) {
    c[o] += v;
    mx[o] += v;
    return;
  }
  if (r < y) {
    c[o] += v;
    w[o] += v;
    mx[o] += v;
    PD(o, l, r);
    mx[o] = max(c[(o << 1)] ? mx[(o << 1)] : 0,
                c[(o << 1 | 1)] ? mx[(o << 1 | 1)] : 0);
  } else {
    Add((o << 1), l, ((l + r) >> 1));
    if (((l + r) >> 1) < y) Add((o << 1 | 1), ((l + r) >> 1) + 1, r);
    mx[o] = max(c[(o << 1)] ? mx[(o << 1)] : 0,
                c[(o << 1 | 1)] ? mx[(o << 1 | 1)] : 0);
    c[o] = max(c[(o << 1)], c[(o << 1 | 1)]);
  }
}
int main() {
  int n = input(), k = input(), m = input(), x;
  n <<= 1;
  Init(1, 1, n);
  for (int i = 1; i <= m; i++) {
    x = input();
    y = input();
    pair<int, int> np = make_pair(x, y);
    if (mk.find(np) != mk.end()) {
      v = -1;
      y += abs(x - k);
      Add(1, 1, n);
      mk.erase(np);
    } else {
      v = 1;
      y += abs(x - k);
      Add(1, 1, n);
      mk.insert(np);
    }
    if (mx[1] <= (n >> 1))
      puts("0");
    else
      printf("%d\n", mx[1] - (n >> 1));
  }
}
