#include <bits/stdc++.h>
using namespace std;
int cnt[5005];
int w[5005];
int n, m, q;
int ans[5005][102];
int wg[5005];
char s[123];
int getsum(int k) {
  int ret = 0;
  for (int i = 0; i < n; i++)
    if ((k >> i) & 1) ret += w[n - 1 - i];
  return ret;
}
int main() {
  scanf("%d%d%d", &n, &m, &q);
  for (int i = 0; i < n; i++) scanf("%d", &w[i]);
  for (int i = 0; i < m; i++) {
    scanf("%s", s);
    int v = 0;
    for (int j = 0; j < n; j++) {
      v = v << 1 | ((s[j] == '1') ? 1 : 0);
    }
    cnt[v]++;
  }
  for (int i = 0; i < (1 << n); i++) {
    wg[i] = getsum(i);
  }
  for (int i = 0; i < (1 << n); i++) {
    for (int j = 0; j < (1 << n); j++) {
      if (wg[(1 << n) - 1 - (i ^ j)] > 100) continue;
      ans[i][wg[(1 << n) - 1 - (i ^ j)]] += cnt[j];
    }
    for (int j = 1; j <= 100; j++) ans[i][j] += ans[i][j - 1];
  }
  int k;
  for (int i = 0; i < q; i++) {
    scanf("%s", s);
    scanf("%d", &k);
    int v = 0;
    for (int j = 0; j < n; j++) {
      v = v << 1 | ((s[j] == '1') ? 1 : 0);
    }
    printf("%d\n", ans[v][k]);
  }
  return 0;
}
