#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000005;
const int MAXLOG = log2(MAXN);
const int oo = 1000000005;
const unsigned long long OO = 1000000000000000005;
const double pi = acos(-1.0);
const double EPS = 1e-4;
const int dr[4] = {-1, 0, 1, 0};
const int dc[4] = {0, 1, 0, -1};
const int dr8[8] = {-1, -1, 0, 1, 1, 1, 0, -1};
const int drknight[8] = {-2, -1, 1, 2, 2, 1, -1, -2};
const int dcknight[8] = {1, 2, 2, 1, -1, -2, -2, -1};
const int MOD = 1000000007;
const int ALPHABET_SIZE = 52;
const int MAX = 1000005;
set<pair<int, int> > pawns;
struct node {
  int l, c;
};
node st[MAXN * 4];
node combine(node a, node b) {
  if (a.c == 0) return b;
  if (b.c == 0) return a;
  node c;
  c.c = a.c + b.c;
  if (a.l + a.c > b.l) {
    c.l = a.l;
  } else {
    c.l = b.l - a.c;
  }
  return c;
}
void update(int i, int l, int r, int t, int d) {
  if (l == r) {
    st[i].c += d;
    return;
  }
  int m = (l + r) >> 1;
  int lc = i << 1;
  int rc = lc | 1;
  if (t <= m) {
    update(lc, l, m, t, d);
  } else {
    update(rc, m + 1, r, t, d);
  }
  st[i] = combine(st[lc], st[rc]);
}
void build(int i, int l, int r) {
  if (l == r) {
    st[i].l = l;
    st[i].c = 0;
    return;
  }
  int m = (l + r) >> 1;
  int lc = i << 1;
  int rc = lc | 1;
  build(lc, l, m);
  build(rc, m + 1, r);
  st[i] = combine(st[lc], st[rc]);
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n, k, m, first, second, d;
  cin >> n >> k >> m;
  build(1, 0, MAXN - 1);
  while (m--) {
    cin >> first >> second;
    if (pawns.find({first, second}) != pawns.end()) {
      pawns.erase({first, second});
      d = -1;
    } else {
      pawns.insert({first, second});
      d = 1;
    }
    update(1, 0, MAXN - 1, second + abs(first - k), d);
    if (!pawns.empty())
      cout << max(0, (st[1].l + st[1].c) - n - 1);
    else
      cout << 0;
    if (m) cout << "\n";
  }
  return 0;
}
