#include <bits/stdc++.h>
using namespace std;
const int MaxN = (int)1e6 + 10;
const int INF = (int)1e9;
const int MOD = (int)1e9 + 7;
int n, q;
int x[MaxN], y[MaxN], r[MaxN];
int add[MaxN];
bool inside(int i, int j) {
long long ds = 1LL * (x[i] - x[j]) * (x[i] - x[j]) + 1LL * (y[i] - y[j]) * (y[i] - y[j]);
return r[i] >= r[j] && ds <= 1LL * (r[i] - r[j]) * (r[i] - r[j]);
}
int getHigh(int x, int y) {
long long dist2 = 1LL * x * x + 1LL * y * y;
long long dist = (int)sqrtl(dist2);
while (dist >= 1 && (dist - 1) * (dist - 1) >= dist2) {
--dist;
}
while (dist * dist < dist2) {
++dist;
}
return dist;
}
int getLow(int x, int y) {
long long dist2 = 1LL * x * x + 1LL * y * y;
long long dist = (int)sqrtl(dist2);
while (dist >= 1 && (dist - 1) * (dist - 1) > dist2) {
--dist;
}
while ((dist + 1) * (dist + 1) <= dist2) {
++dist;
}
return dist;
}
int main() {
// freopen("input.txt", "r", stdin);
scanf("%d%d", &n, &q);
for (int i = 1; i <= n; ++i) {
scanf("%d%d%d", &x[i], &y[i], &r[i]);
}
for (int i = 1; i <= n; ++i) {
for (int j = i + 1; j <= n; ++j) {
int mi = 0;
if (inside(i, j)) {
mi = r[i] - (r[j] + getLow(x[i] - x[j], y[i] - y[j]));
} else if (inside(j, i)) {
mi = r[j] - (r[i] + getLow(x[i] - x[j], y[i] - y[j]));
} else {
mi = max(0, getHigh(x[i] - x[j], y[i] - y[j]) - (r[i] + r[j]));
}
int ma = getLow(x[i] - x[j], y[i] - y[j]) + (r[i] + r[j]);
add[mi] += 1;
add[ma + 1] -= 1;
}
}
for (int i = 1; i < MaxN; ++i) {
add[i] += add[i - 1];
}
while (q --> 0) {
int x;
scanf("%d", &x);
printf("%d\n", add[x]);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApjb25zdCBpbnQgTWF4TiA9IChpbnQpMWU2ICsgMTA7CmNvbnN0IGludCBJTkYgPSAoaW50KTFlOTsKY29uc3QgaW50IE1PRCA9IChpbnQpMWU5ICsgNzsKIAppbnQgbiwgcTsKaW50IHhbTWF4Tl0sIHlbTWF4Tl0sIHJbTWF4Tl07CmludCBhZGRbTWF4Tl07CiAKYm9vbCBpbnNpZGUoaW50IGksIGludCBqKSB7Cglsb25nIGxvbmcgZHMgPSAxTEwgKiAoeFtpXSAtIHhbal0pICogKHhbaV0gLSB4W2pdKSArIDFMTCAqICh5W2ldIC0geVtqXSkgKiAoeVtpXSAtIHlbal0pOwoJcmV0dXJuIHJbaV0gPj0gcltqXSAmJiBkcyA8PSAxTEwgKiAocltpXSAtIHJbal0pICogKHJbaV0gLSByW2pdKTsKfQogCmludCBnZXRIaWdoKGludCB4LCBpbnQgeSkgewoJbG9uZyBsb25nIGRpc3QyID0gMUxMICogeCAqIHggKyAxTEwgKiB5ICogeTsKCWxvbmcgbG9uZyBkaXN0ID0gKGludClzcXJ0bChkaXN0Mik7Cgl3aGlsZSAoZGlzdCA+PSAxICYmIChkaXN0IC0gMSkgKiAoZGlzdCAtIDEpID49IGRpc3QyKSB7CgkJLS1kaXN0OwoJfQoJd2hpbGUgKGRpc3QgKiBkaXN0IDwgZGlzdDIpIHsKCQkrK2Rpc3Q7Cgl9CglyZXR1cm4gZGlzdDsKfQogCmludCBnZXRMb3coaW50IHgsIGludCB5KSB7Cglsb25nIGxvbmcgZGlzdDIgPSAxTEwgKiB4ICogeCArIDFMTCAqIHkgKiB5OwoJbG9uZyBsb25nIGRpc3QgPSAoaW50KXNxcnRsKGRpc3QyKTsKCXdoaWxlIChkaXN0ID49IDEgJiYgKGRpc3QgLSAxKSAqIChkaXN0IC0gMSkgPiBkaXN0MikgewoJCS0tZGlzdDsKCX0KCXdoaWxlICgoZGlzdCArIDEpICogKGRpc3QgKyAxKSA8PSBkaXN0MikgewoJCSsrZGlzdDsKCX0KCXJldHVybiBkaXN0Owp9CiAKaW50IG1haW4oKSB7Ci8vCWZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwoJc2NhbmYoIiVkJWQiLCAmbiwgJnEpOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CgkJc2NhbmYoIiVkJWQlZCIsICZ4W2ldLCAmeVtpXSwgJnJbaV0pOwoJfQoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CgkJZm9yIChpbnQgaiA9IGkgKyAxOyBqIDw9IG47ICsraikgewoJCQlpbnQgbWkgPSAwOwoJCQlpZiAoaW5zaWRlKGksIGopKSB7CgkJCQltaSA9IHJbaV0gLSAocltqXSArIGdldExvdyh4W2ldIC0geFtqXSwgeVtpXSAtIHlbal0pKTsKCQkJfSBlbHNlIGlmIChpbnNpZGUoaiwgaSkpIHsKCQkJCW1pID0gcltqXSAtIChyW2ldICsgZ2V0TG93KHhbaV0gLSB4W2pdLCB5W2ldIC0geVtqXSkpOwoJCQl9IGVsc2UgewoJCQkJbWkgPSBtYXgoMCwgZ2V0SGlnaCh4W2ldIC0geFtqXSwgeVtpXSAtIHlbal0pIC0gKHJbaV0gKyByW2pdKSk7CgkJCX0KCQkJaW50IG1hID0gZ2V0TG93KHhbaV0gLSB4W2pdLCB5W2ldIC0geVtqXSkgKyAocltpXSArIHJbal0pOwoJCQlhZGRbbWldICs9IDE7CgkJCWFkZFttYSArIDFdIC09IDE7CgkJfQoJfQoJZm9yIChpbnQgaSA9IDE7IGkgPCBNYXhOOyArK2kpIHsKCQlhZGRbaV0gKz0gYWRkW2kgLSAxXTsKCX0KCXdoaWxlIChxIC0tPiAwKSB7CgkJaW50IHg7CgkJc2NhbmYoIiVkIiwgJngpOwoJCXByaW50ZigiJWRcbiIsIGFkZFt4XSk7Cgl9CglyZXR1cm4gMDsKfQog