#include <bits/stdc++.h>
using namespace std;
int w[15];
int cnt[500005];
vector<int> v;
int num[5005][5005];
int n, m, q, k;
int getval(char s[], int len) {
  int ans = 0;
  reverse(s, s + len);
  int temp = 1;
  for (int i = 0; i < len; i++) {
    ans += temp * (s[i] - '0');
    temp *= 2;
  }
  return ans;
}
int main() {
  char s[15];
  scanf("%d%d%d", &n, &m, &q);
  for (int i = 0; i < n; i++) scanf("%d", &w[i]);
  for (int i = 1; i <= m; i++) {
    scanf("%s", s);
    int val = getval(s, n);
    cnt[val]++;
    if (cnt[val] == 1) v.push_back(val);
  }
  int len = v.size();
  for (int i = 0; i < (1 << n); i++) {
    for (int j = 0; j < len; j++) {
      int u = i;
      int t = v[j];
      int sum = 0;
      for (int k = n - 1; k >= 0; k--) {
        if ((u & 1) == (t & 1)) sum += w[k];
        if (sum > 100) break;
        u >>= 1;
        t >>= 1;
      }
      if (sum <= 100) num[i][sum] += cnt[v[j]];
    }
  }
  while (q--) {
    int ans = 0;
    scanf("%s%d", s, &k);
    int val = getval(s, n);
    for (int i = 0; i <= k; i++) ans += num[val][i];
    printf("%d\n", ans);
  }
}
