#include using namespace std; const int M = 15005; int a[M]; struct Node { bitset s; } tree[M * 4]; void build(int l, int r, int p) { if (l == r) { tree[p].s.reset(); tree[p].s[0] = 1; tree[p].s[a[l]] = 1; return; } int m = (l + r) >> 1; build(l, m, p << 1); build(m + 1, r, p << 1 | 1); tree[p].s = tree[p << 1].s | (tree[p << 1].s << a[m + 1]); } void update(int l, int r, int p, int i, int v) { if (l == r) { a[i] = v; tree[p].s.reset(); tree[p].s[0] = 1; tree[p].s[v] = 1; return; } int m = (l + r) >> 1; if (i <= m) update(l, m, p << 1, i, v); else update(m + 1, r, p << 1 | 1, i, v); tree[p].s = tree[p << 1].s | (tree[p << 1].s << a[m + 1]); } int main() { int n, k, q, x, v; scanf("%d%d", &n, &k); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } build(1, n, 1); scanf("%d", &q); while (q--) { scanf("%d%d", &x, &v); update(1, n, 1, x, v); cout << tree[1].s[k] << endl; } return 0; }