#include <bits/stdc++.h>
void swap(int i, int j, int a[][2]) {
  int temp = a[i][0];
  a[i][0] = a[j][0];
  a[j][0] = temp;
  int temp2 = a[i][1];
  a[i][1] = a[j][1];
  a[j][1] = temp2;
}
void quicksort(int arr[][2], int left, int right) {
  int min = (left + right) / 2;
  int i = left;
  int j = right;
  int pivot = arr[min][0];
  int pivot2 = arr[min][1];
  while (left < j || i < right) {
    while ((arr[i][0] < pivot) | (arr[i][0] == pivot && arr[i][1] < pivot2)) {
      i++;
    }
    while ((arr[j][0] > pivot) | (arr[j][0] == pivot && arr[j][1] > pivot2)) {
      j--;
    }
    if (i <= j) {
      swap(i, j, arr);
      i++;
      j--;
    } else {
      if (left < j) {
        quicksort(arr, left, j);
      }
      if (i < right) {
        quicksort(arr, i, right);
      }
      return;
    }
  }
}
int bin(int arr[][2], int s, int f, int number) {
  int pivot = s + (f - s) / 2;
  if (number < arr[pivot][0]) {
    if (s == f) {
      return -1;
    } else {
      return bin(arr, s, pivot, number);
    }
  } else if (number > arr[pivot][0]) {
    if (s == f) {
      return -1;
    } else {
      return bin(arr, pivot + 1, f, number);
    }
  } else if (number == arr[pivot][0]) {
    while (arr[pivot - 1][0] == number && pivot > 0) {
      pivot--;
    }
    return pivot;
  }
  return -1;
}
int main() {
  int n;
  int k;
  int q;
  scanf("%d", &n);
  scanf("%d", &k);
  int bills[n];
  int array[(n * k)][2];
  for (int i = 0; i < n; i++) {
    scanf("%d", &bills[i]);
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < k; j++) {
      array[(k * i) + j][0] = bills[i] * (j + 1);
      array[(k * i) + j][1] = j + 1;
    }
  }
  quicksort(array, 0, (n * k) - 1);
  scanf("%d", &q);
  int queries[q];
  for (int i = 0; i < q; i++) {
    int minbill = -1;
    scanf("%d", &queries[i]);
    for (int j = 0; j < n * k; j++) {
      int c1 = array[j][0];
      int cb1 = array[j][1];
      if (c1 == queries[i]) {
        if (minbill == -1) {
          minbill = cb1;
        } else {
          if (cb1 < minbill) {
            minbill = cb1;
          }
        }
      }
      int r1 = queries[i] - c1;
      int ptr = bin(array, 0, (n * k) - 1, r1);
      if (ptr != -1 && cb1 + array[ptr][1] <= k) {
        if (minbill == -1) {
          minbill = cb1 + array[ptr][1];
        } else {
          if (cb1 + array[ptr][1] < minbill) {
            minbill = cb1 + array[ptr][1];
          }
        }
      }
    }
    printf("%d\n", minbill);
  }
  return 0;
}
