#include <bits/stdc++.h>
using namespace std;
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int n, m, q;
  cin >> n >> m >> q;
  vector<int> w(n);
  for (int i = 0; i < n; i++) cin >> w[i];
  vector<int> kind(1 << n);
  for (int i = 0; i < m; i++) {
    string s;
    cin >> s;
    int mask = 0;
    for (int j = 0; j < n; j++) {
      if (s[j] == '1') mask |= 1 << j;
    }
    kind[mask]++;
  }
  vector<int> cnt(101);
  vector<vector<int> > sum(1 << n, vector<int>(101));
  for (int a = 0; a < (1 << n); a++) {
    fill(begin(cnt), end(cnt), 0);
    for (int b = 0; b < (1 << n); b++) {
      if (kind[b] == 0) continue;
      int value = 0;
      for (int j = 0; j < n; j++) {
        if (((a >> j) & 1) == ((b >> j) & 1)) value += w[j];
        if (value > 100) break;
      }
      if (value <= 100) cnt[value] += kind[b];
    }
    for (int i = 0; i < 100; i++) cnt[i + 1] += cnt[i];
    copy(begin(cnt), end(cnt), begin(sum[a]));
  }
  for (int i = 0; i < q; i++) {
    string t;
    cin >> t;
    int bnd;
    cin >> bnd;
    int mask = 0;
    for (int j = 0; j < n; j++) {
      if (t[j] == '1') mask |= 1 << j;
    }
    printf("%d\n", sum[mask][bnd]);
  }
  return 0;
}
