#include <bits/stdc++.h>
using namespace std;
const int N = 4096;
map<string, int> m;
map<string, int> g;
int n, M, k, q, d[N][101], w[12];
string get(int v) {
  string t = "";
  for (int i = 0; i < n; i++) t += (v & (1 << i)) ? '1' : '0';
  reverse(t.begin(), t.end());
  return t;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> M >> q;
  for (int i = 0; i < n; i++) cin >> w[i];
  for (int i = 0; i < M; i++) {
    string s;
    cin >> s;
    m[s]++;
  }
  for (int i = 0; i < (1 << n); i++) {
    string s = get(i);
    g[s] = i;
    for (auto it : m) {
      int res = 0;
      for (int i = 0; i < n; i++) res += w[i] * (it.first[i] == s[i]);
      if (res <= 100) d[i][res] += it.second;
    }
  }
  for (int i = 0; i < 4096; i++)
    for (int j = 1; j < 101; j++) d[i][j] += d[i][j - 1];
  while (q--) {
    string s;
    cin >> s >> k;
    cout << d[g[s]][k] << "\n";
  }
}
