#include using namespace std; using i64 = long long; using BITSET = bitset<15001>; int n, k, q; int a[15010]; int tick[15010]; vector segs[60010]; void ins(int x, int l, int r, int ll, int rr, int v) { if (ll <= l && r <= rr) { segs[x].push_back(v); return; } int m = (l + r) >> 1; if (ll <= m) ins(x << 1, l, m, ll, rr, v); if (rr > m) ins(x << 1 | 1, m + 1, r, ll, rr, v); } void dfs(int x, int l, int r, BITSET cur) { for (int v : segs[x]) cur |= cur << v; if (l == r) { printf("%d\n", int(cur[k])); return; } int m = (l + r) >> 1; dfs(x << 1, l, m, cur); dfs(x << 1 | 1, m + 1, r, cur); } int main() { // freopen("superset.in", "r", stdin); // freopen("superset.out", "w", stdout); scanf("%d%d", &n, &k); for (int i = 1; i <= n; i ++) scanf("%d", &a[i]), tick[i] = 1; scanf("%d", &q); for (int i = 1; i <= q; i ++) { int p, x; scanf("%d%d", &p, &x); if (tick[p] < i) ins(1, 1, q, tick[p], i - 1, a[p]); tick[p] = i; a[p] = x; } for (int i = 1; i <= n; i ++) ins(1, 1, q, tick[i], q, a[i]); BITSET cur; cur[0] = 1; dfs(1, 1, q, cur); return 0; }