#include <bits/stdc++.h>
#include <cassert>
using namespace std;
#define QuocAn 0
#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
const int U = 400;
const int B = 500;
struct elem {
int val;
int next;
int cnt;
};
bool operator<(const elem &a, const elem &b) {
return a.val < b.val;
}
elem bucket[305][905];
int sz[305];
int sentinel;
int b[150005];
int a[150005], n, l;
int q_cnt;
void bucket_label(int bnum) {
int pt = sz[bnum];
for (int i = sz[bnum] - 1; i >= 0; i--) {
while (pt && bucket[bnum][pt - 1].val > bucket[bnum][i].val + l) {
pt--;
}
if (pt == sz[bnum]) {
bucket[bnum][i].next = -1;
bucket[bnum][i].cnt = 0;
} else {
if (bucket[bnum][pt].next == -1) {
bucket[bnum][i].next = pt;
} else {
bucket[bnum][i].next = bucket[bnum][pt].next;
}
bucket[bnum][i].cnt = bucket[bnum][pt].cnt + 1;
}
}
}
void bucket_clear() {
int piv = 0;
for (int i = 0; i < sentinel; i++) {
for (int j = 0; j < sz[i]; j++) {
b[piv++] = bucket[i][j].val;
}
}
for (int i = 0; i < sentinel; i++) {
sz[i] = min(n - i * B, B);
for (int j = 0; j < sz[i]; j++) {
elem tmp;
tmp.val = b[i * B + j];
tmp.next = 0;
tmp.cnt = 0;
bucket[i][j] = tmp;
}
bucket_label(i);
}
}
void bucket_erase(int bnum, int pos) {
sz[bnum]--;
for (int i = pos; i < sz[bnum]; i++) {
bucket[bnum][i] = bucket[bnum][i + 1];
}
bucket_label(bnum);
}
void bucket_update(int bnum, int pos, int val) {
sz[bnum]++;
for (int i = sz[bnum] - 1; i > pos; i--) {
bucket[bnum][i] = bucket[bnum][i - 1];
}
elem tmp;
tmp.val = val;
tmp.next = 0;
tmp.cnt = 0;
bucket[bnum][pos] = tmp;
bucket_label(bnum);
}
int query() {
int pos = 0, ret = 0;
for (int i = 0; i < sentinel; ) {
if (!sz[i]) {
i++;
continue;
}
ret += bucket[i][pos].cnt + 1;
if (bucket[i][pos].next != -1) pos = bucket[i][pos].next;
int new_buck = i + 1;
int new_pos = bucket[i][pos].val + l;
elem target;
target.val = new_pos + 1;
target.next = 0;
target.cnt = 0;
while (1) {
if (new_buck == sentinel) break;
if (lower_bound(bucket[new_buck], bucket[new_buck] + sz[new_buck], target) != bucket[new_buck] + sz[new_buck]) break;
new_buck++;
}
if (new_buck == sentinel) break;
i = new_buck;
pos = (int)(lower_bound(bucket[new_buck], bucket[new_buck] + sz[new_buck], target) - bucket[new_buck]);
}
return ret;
}
void init(int N, int L, int* X) {
memcpy(a, X, sizeof(int) * N);
memcpy(b, a, sizeof(int) * N);
n = N;
l = L;
while (sentinel * B < n) sentinel++;
bucket_clear();
}
int update(int i, int y) {
q_cnt = (q_cnt + 1) % U;
int o = a[i];
a[i] = y;
elem target_o;
target_o.val = o;
target_o.next = 0;
target_o.cnt = 0;
for (int idx = 0; idx < sentinel; idx++) {
if (!sz[idx]) continue;
else if (bucket[idx][0].val <= o && o <= bucket[idx][sz[idx] - 1].val) {
int pos = (int)(lower_bound(bucket[idx], bucket[idx] + sz[idx], target_o) - bucket[idx]);
bucket_erase(idx, pos);
break;
}
}
int low = -1;
for (int idx = 0; idx < sentinel; idx++) {
if (!sz[idx]) continue;
if (bucket[idx][0].val <= y) low = idx;
}
if (low == -1) {
bucket_update(0, 0, y);
} else {
elem target_y;
target_y.val = y;
target_y.next = 0;
target_y.cnt = 0;
int pos = (int)(lower_bound(bucket[low], bucket[low] + sz[low], target_y) - bucket[low]);
bucket_update(low, pos, y);
}
if (q_cnt == 0) {
bucket_clear();
}
return query();
}
int main() {
fastio
int N, L, M;
if (!(cin >> N >> L >> M)) return 0;
static int X[150005];
for (int i = 0; i < N; i++) {
cin >> X[i];
}
init(N, L, X);
while (M--) {
int idx, val;
cin >> idx >> val;
cout << update(idx, val) << "\n";
}
return QuocAn;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxjYXNzZXJ0PgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgUXVvY0FuIDAKI2RlZmluZSBmYXN0aW8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCk7IGNvdXQudGllKE5VTEwpOwoKY29uc3QgaW50IFUgPSA0MDA7CmNvbnN0IGludCBCID0gNTAwOwoKc3RydWN0IGVsZW0gewogICAgaW50IHZhbDsKICAgIGludCBuZXh0OwogICAgaW50IGNudDsKfTsKCmJvb2wgb3BlcmF0b3I8KGNvbnN0IGVsZW0gJmEsIGNvbnN0IGVsZW0gJmIpIHsgCiAgICByZXR1cm4gYS52YWwgPCBiLnZhbDsgCn0KCmVsZW0gYnVja2V0WzMwNV1bOTA1XTsKaW50IHN6WzMwNV07CgppbnQgc2VudGluZWw7CmludCBiWzE1MDAwNV07CmludCBhWzE1MDAwNV0sIG4sIGw7CmludCBxX2NudDsKCnZvaWQgYnVja2V0X2xhYmVsKGludCBibnVtKSB7CiAgICBpbnQgcHQgPSBzeltibnVtXTsKICAgIGZvciAoaW50IGkgPSBzeltibnVtXSAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgd2hpbGUgKHB0ICYmIGJ1Y2tldFtibnVtXVtwdCAtIDFdLnZhbCA+IGJ1Y2tldFtibnVtXVtpXS52YWwgKyBsKSB7CiAgICAgICAgICAgIHB0LS07CiAgICAgICAgfQogICAgICAgIGlmIChwdCA9PSBzeltibnVtXSkgewogICAgICAgICAgICBidWNrZXRbYm51bV1baV0ubmV4dCA9IC0xOwogICAgICAgICAgICBidWNrZXRbYm51bV1baV0uY250ID0gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoYnVja2V0W2JudW1dW3B0XS5uZXh0ID09IC0xKSB7CiAgICAgICAgICAgICAgICBidWNrZXRbYm51bV1baV0ubmV4dCA9IHB0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgYnVja2V0W2JudW1dW2ldLm5leHQgPSBidWNrZXRbYm51bV1bcHRdLm5leHQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnVja2V0W2JudW1dW2ldLmNudCA9IGJ1Y2tldFtibnVtXVtwdF0uY250ICsgMTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgYnVja2V0X2NsZWFyKCkgewogICAgaW50IHBpdiA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlbnRpbmVsOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHN6W2ldOyBqKyspIHsKICAgICAgICAgICAgYltwaXYrK10gPSBidWNrZXRbaV1bal0udmFsOwogICAgICAgIH0KICAgIH0KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2VudGluZWw7IGkrKykgewogICAgICAgIHN6W2ldID0gbWluKG4gLSBpICogQiwgQik7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzeltpXTsgaisrKSB7CiAgICAgICAgICAgIGVsZW0gdG1wOwogICAgICAgICAgICB0bXAudmFsID0gYltpICogQiArIGpdOwogICAgICAgICAgICB0bXAubmV4dCA9IDA7CiAgICAgICAgICAgIHRtcC5jbnQgPSAwOwogICAgICAgICAgICBidWNrZXRbaV1bal0gPSB0bXA7CiAgICAgICAgfQogICAgICAgIGJ1Y2tldF9sYWJlbChpKTsKICAgIH0KfQoKdm9pZCBidWNrZXRfZXJhc2UoaW50IGJudW0sIGludCBwb3MpIHsKICAgIHN6W2JudW1dLS07CiAgICBmb3IgKGludCBpID0gcG9zOyBpIDwgc3pbYm51bV07IGkrKykgewogICAgICAgIGJ1Y2tldFtibnVtXVtpXSA9IGJ1Y2tldFtibnVtXVtpICsgMV07CiAgICB9CiAgICBidWNrZXRfbGFiZWwoYm51bSk7Cn0KCnZvaWQgYnVja2V0X3VwZGF0ZShpbnQgYm51bSwgaW50IHBvcywgaW50IHZhbCkgewogICAgc3pbYm51bV0rKzsKICAgIGZvciAoaW50IGkgPSBzeltibnVtXSAtIDE7IGkgPiBwb3M7IGktLSkgewogICAgICAgIGJ1Y2tldFtibnVtXVtpXSA9IGJ1Y2tldFtibnVtXVtpIC0gMV07CiAgICB9CiAgICBlbGVtIHRtcDsKICAgIHRtcC52YWwgPSB2YWw7CiAgICB0bXAubmV4dCA9IDA7CiAgICB0bXAuY250ID0gMDsKICAgIGJ1Y2tldFtibnVtXVtwb3NdID0gdG1wOwogICAgYnVja2V0X2xhYmVsKGJudW0pOwp9CgppbnQgcXVlcnkoKSB7CiAgICBpbnQgcG9zID0gMCwgcmV0ID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2VudGluZWw7ICkgewogICAgICAgIGlmICghc3pbaV0pIHsKICAgICAgICAgICAgaSsrOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgIAogICAgICAgIHJldCArPSBidWNrZXRbaV1bcG9zXS5jbnQgKyAxOwogICAgICAgIGlmIChidWNrZXRbaV1bcG9zXS5uZXh0ICE9IC0xKSBwb3MgPSBidWNrZXRbaV1bcG9zXS5uZXh0OwogICAgICAgICAKICAgICAgICBpbnQgbmV3X2J1Y2sgPSBpICsgMTsKICAgICAgICBpbnQgbmV3X3BvcyA9IGJ1Y2tldFtpXVtwb3NdLnZhbCArIGw7CiAgICAgICAgZWxlbSB0YXJnZXQ7CiAgICAgICAgdGFyZ2V0LnZhbCA9IG5ld19wb3MgKyAxOwogICAgICAgIHRhcmdldC5uZXh0ID0gMDsKICAgICAgICB0YXJnZXQuY250ID0gMDsKCiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgaWYgKG5ld19idWNrID09IHNlbnRpbmVsKSBicmVhazsKICAgICAgICAgICAgaWYgKGxvd2VyX2JvdW5kKGJ1Y2tldFtuZXdfYnVja10sIGJ1Y2tldFtuZXdfYnVja10gKyBzeltuZXdfYnVja10sIHRhcmdldCkgIT0gYnVja2V0W25ld19idWNrXSArIHN6W25ld19idWNrXSkgYnJlYWs7CiAgICAgICAgICAgIG5ld19idWNrKys7CiAgICAgICAgfQogICAgICAgICAKICAgICAgICBpZiAobmV3X2J1Y2sgPT0gc2VudGluZWwpIGJyZWFrOwogICAgICAgIGkgPSBuZXdfYnVjazsKICAgICAgICBwb3MgPSAoaW50KShsb3dlcl9ib3VuZChidWNrZXRbbmV3X2J1Y2tdLCBidWNrZXRbbmV3X2J1Y2tdICsgc3pbbmV3X2J1Y2tdLCB0YXJnZXQpIC0gYnVja2V0W25ld19idWNrXSk7CiAgICB9CiAgICByZXR1cm4gcmV0Owp9Cgp2b2lkIGluaXQoaW50IE4sIGludCBMLCBpbnQqIFgpIHsKICAgIG1lbWNweShhLCBYLCBzaXplb2YoaW50KSAqIE4pOwogICAgbWVtY3B5KGIsIGEsIHNpemVvZihpbnQpICogTik7CiAgICBuID0gTjsKICAgIGwgPSBMOwogICAgd2hpbGUgKHNlbnRpbmVsICogQiA8IG4pIHNlbnRpbmVsKys7CiAgICBidWNrZXRfY2xlYXIoKTsKfQoKaW50IHVwZGF0ZShpbnQgaSwgaW50IHkpIHsKICAgIHFfY250ID0gKHFfY250ICsgMSkgJSBVOwogICAgaW50IG8gPSBhW2ldOwogICAgYVtpXSA9IHk7CiAgICBlbGVtIHRhcmdldF9vOwogICAgdGFyZ2V0X28udmFsID0gbzsKICAgIHRhcmdldF9vLm5leHQgPSAwOwogICAgdGFyZ2V0X28uY250ID0gMDsKCiAgICBmb3IgKGludCBpZHggPSAwOyBpZHggPCBzZW50aW5lbDsgaWR4KyspIHsKICAgICAgICBpZiAoIXN6W2lkeF0pIGNvbnRpbnVlOwogICAgICAgIGVsc2UgaWYgKGJ1Y2tldFtpZHhdWzBdLnZhbCA8PSBvICYmIG8gPD0gYnVja2V0W2lkeF1bc3pbaWR4XSAtIDFdLnZhbCkgewogICAgICAgICAgICBpbnQgcG9zID0gKGludCkobG93ZXJfYm91bmQoYnVja2V0W2lkeF0sIGJ1Y2tldFtpZHhdICsgc3pbaWR4XSwgdGFyZ2V0X28pIC0gYnVja2V0W2lkeF0pOwogICAgICAgICAgICBidWNrZXRfZXJhc2UoaWR4LCBwb3MpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBpbnQgbG93ID0gLTE7CiAgICBmb3IgKGludCBpZHggPSAwOyBpZHggPCBzZW50aW5lbDsgaWR4KyspIHsKICAgICAgICBpZiAoIXN6W2lkeF0pIGNvbnRpbnVlOwogICAgICAgIGlmIChidWNrZXRbaWR4XVswXS52YWwgPD0geSkgbG93ID0gaWR4OwogICAgfQogICAgaWYgKGxvdyA9PSAtMSkgewogICAgICAgIGJ1Y2tldF91cGRhdGUoMCwgMCwgeSk7CiAgICB9IGVsc2UgewogICAgICAgIGVsZW0gdGFyZ2V0X3k7CiAgICAgICAgdGFyZ2V0X3kudmFsID0geTsKICAgICAgICB0YXJnZXRfeS5uZXh0ID0gMDsKICAgICAgICB0YXJnZXRfeS5jbnQgPSAwOwogICAgICAgIGludCBwb3MgPSAoaW50KShsb3dlcl9ib3VuZChidWNrZXRbbG93XSwgYnVja2V0W2xvd10gKyBzeltsb3ddLCB0YXJnZXRfeSkgLSBidWNrZXRbbG93XSk7CiAgICAgICAgYnVja2V0X3VwZGF0ZShsb3csIHBvcywgeSk7CiAgICB9CiAgICBpZiAocV9jbnQgPT0gMCkgewogICAgICAgIGJ1Y2tldF9jbGVhcigpOwogICAgfQogICAgcmV0dXJuIHF1ZXJ5KCk7Cn0KCmludCBtYWluKCkgewogICAgZmFzdGlvCiAgICBpbnQgTiwgTCwgTTsKICAgIGlmICghKGNpbiA+PiBOID4+IEwgPj4gTSkpIHJldHVybiAwOwogICAgCiAgICBzdGF0aWMgaW50IFhbMTUwMDA1XTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgY2luID4+IFhbaV07CiAgICB9CiAgICAKICAgIGluaXQoTiwgTCwgWCk7CiAgICAKICAgIHdoaWxlIChNLS0pIHsKICAgICAgICBpbnQgaWR4LCB2YWw7CiAgICAgICAgY2luID4+IGlkeCA+PiB2YWw7CiAgICAgICAgY291dCA8PCB1cGRhdGUoaWR4LCB2YWwpIDw8ICJcbiI7CiAgICB9CiAgICAKICAgIHJldHVybiBRdW9jQW47Cn0K