#include <bits/stdc++.h>
using namespace std;
const int N = 1000000 + 10;
const int mod = 1e9 + 7;
int vis[N], pri[N], miu[N], phi[N], cnt;
long long fac[N], inv[N];
long long C(int n, int k) { return fac[n] * inv[k] % mod * inv[n - k] % mod; }
long long qpow(long long n, long long k) {
  long long res = 1;
  while (k) {
    if (k & 1) res = res * n % mod;
    n = n * n % mod;
    k >>= 1;
  }
  return res;
}
void init() {
  cnt = 0;
  miu[1] = phi[1] = 1;
  for (int i = 2; i < N; i++) {
    if (!vis[i]) pri[cnt++] = i, miu[i] = -1, phi[i] = i - 1;
    for (int j = 0; j < cnt && pri[j] * i < N; j++) {
      vis[pri[j] * i] = 1;
      miu[pri[j] * i] = i % pri[j] == 0 ? 0 : -miu[i];
      phi[pri[j] * i] =
          i % pri[j] == 0 ? phi[i] * pri[j] : phi[i] * (pri[j] - 1);
      if (i % pri[j] == 0) break;
    }
  }
  fac[0] = 1;
  for (int i = 1; i < N; i++) fac[i] = fac[i - 1] * i % mod;
  inv[N - 1] = qpow(fac[N - 1], mod - 2);
  for (int i = N - 2; i >= 0; i--) inv[i] = inv[i + 1] * (i + 1) % mod;
}
long long a[N];
int main() {
  init();
  int n, k, q;
  scanf("%d%d%d", &n, &k, &q);
  long long ans = 0;
  for (int i = 1; i <= n + q; i++) {
    int x;
    scanf("%d", &x);
    for (int j = 1; j * j <= x; j++) {
      if (x % j == 0) {
        if (a[j] + 1 >= k) {
          ans += phi[j] * C(a[j], k - 1) % mod;
          ans %= mod;
        }
        a[j]++;
        if (j * j != x) {
          if (a[x / j] + 1 >= k) {
            ans += phi[x / j] * C(a[x / j], k - 1) % mod;
            ans %= mod;
          }
          a[x / j]++;
        }
      }
    }
    if (i > n) printf("%lld\n", ans);
  }
}
