#include <bits/stdc++.h>
using namespace std;
const long long INF = 1000000000;
const int MAXN = 1 << 21;
const long long MOD = 1e9 + 7;
template <typename T>
void chmin(T &a, T b) {
  if (a > b) a = b;
}
template <typename T>
void chmax(T &a, T b) {
  if (a < b) a = b;
}
template <typename T>
void add(T &a, T b) {
  a += b;
  if (a < 0) a += MOD;
  if (a >= MOD) a -= MOD;
}
int in() {
  int x;
  scanf("%d", &x);
  return x;
}
long long lin() {
  long long x;
  scanf("%lld", &x);
  return x;
}
double din() {
  double x;
  scanf("%lf", &x);
  return x;
}
long long p2[64];
void initP2() {
  p2[0] = 1;
  for (int i = (1); i <= (63); ++i) {
    p2[i] = p2[i - 1] * 2;
  }
}
int countBits(int n) {
  int ret = 0;
  while (n) {
    ret += n & 1;
    n >>= 1;
  }
  return ret;
}
void init() { initP2(); }
bool check(int x) {
  for (int i = 0; i < (64); ++i) {
    if (x == p2[i] - 1) return true;
  }
  return false;
}
int w[128];
int cnt[1 << 12];
int sum[1 << 12][1 << 12];
int toNum(const char *s) {
  int ret = 0;
  int len = strlen(s);
  for (int i = 0; i < (len); ++i) {
    ret += p2[i] * (s[i] - '0');
  }
  return ret;
}
int getVal(int x, int y, int n) {
  x ^= y;
  int ret = 0;
  for (int i = 0; i < (n); ++i) {
    if (p2[i] & x) continue;
    ret += w[i];
  }
  return ret;
}
int main() {
  init();
  int n, m, q;
  cin >> n >> m >> q;
  for (int i = 0; i < (n); ++i) w[i] = in();
  memset((cnt), (0), sizeof((cnt)));
  while (m--) {
    char s[111];
    scanf("%s", s);
    cnt[toNum(s)]++;
  }
  for (int i = 0; i < (p2[n]); ++i) {
  }
  memset((sum), (0), sizeof((sum)));
  for (int i = 0; i < (1 << n); ++i) {
    for (int j = 0; j < (1 << n); ++j) {
      int val = getVal(i, j, n);
      sum[i][val] += cnt[j];
    }
    for (int i = 0; i < (p2[n]); ++i) {
    }
  }
  for (int i = 0; i < (p2[n]); ++i) {
  }
  for (int i = 0; i < (p2[n]); ++i) {
    for (int j = (1); j <= (128); ++j) {
      sum[i][j] += sum[i][j - 1];
    }
  }
  while (q--) {
    char t[111];
    scanf("%s", t);
    int k = in();
    int num = toNum(t);
    printf("%d\n", sum[num][k]);
  }
  return 0;
}
