#include using namespace std; using i64 = long long; const i64 mods[2] = { 1000000007, 1000000009, }; i64 ways[2][15010]; int n, k, q; int a[15010]; void add(int x) { if (x == 0) return; for (int c = 0; c < 2; c ++) { for (int j = k; j >= x; j --) (ways[c][j] += ways[c][j - x]) %= mods[c]; } } void del(int x) { if (x == 0) return; for (int c = 0; c < 2; c ++) { for (int j = x; j <= k; j ++) (ways[c][j] += mods[c] - ways[c][j - x]) %= mods[c]; } } int main() { // freopen("superset.in", "r", stdin); // freopen("superset.out", "w", stdout); ways[0][0] = ways[1][0] = 1; scanf("%d%d", &n, &k); for (int i = 1; i <= n; i ++) scanf("%d", &a[i]), add(a[i]); scanf("%d", &q); while (q --) { int p, x; scanf("%d%d", &p, &x); del(a[p]); add(a[p] = x); printf("%d\n", ways[0][k] || ways[1][k]); } return 0; }