#include<stdio.h>
struct xy {
int x, y, p;
}a[1212];
bool is_in(xy a, xy b) {
int d = (a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y);
return d <= a.p*a.p;
}
int n;
bool is_gone[1212];
void dfs(int w) {
is_gone[w] = 1;
for (int i = 0; i < n; i++) {
if (is_gone[i])continue;
if(is_in(a[w],a[i]))dfs(i);
}
}
int main() {
int i, j, ans = 0;
scanf("%d", &n);
for (i = 0; i < n; i++)scanf("%d%d%d", &a[i].x, &a[i].y, &a[i].p);
for (i = 0; i < n; i++) {
int res = 0;
dfs(i);
for (j = 0; j < n; j++) {
res += is_gone[j];
is_gone[j] = 0;
}
if (ans < res)ans = res;
}
printf("%d", ans);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4Kc3RydWN0IHh5IHsKCWludCB4LCB5LCBwOwp9YVsxMjEyXTsKYm9vbCBpc19pbih4eSBhLCB4eSBiKSB7CglpbnQgZCA9IChhLnggLSBiLngpKihhLnggLSBiLngpICsgKGEueSAtIGIueSkqKGEueSAtIGIueSk7CglyZXR1cm4gZCA8PSBhLnAqYS5wOwp9CmludCBuOyAKYm9vbCBpc19nb25lWzEyMTJdOwp2b2lkIGRmcyhpbnQgdykgewoJaXNfZ29uZVt3XSA9IDE7Cglmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewoJCWlmIChpc19nb25lW2ldKWNvbnRpbnVlOwoJCWlmKGlzX2luKGFbd10sYVtpXSkpZGZzKGkpOwoJfQp9CmludCBtYWluKCkgewoJaW50IGksIGosIGFucyA9IDA7CglzY2FuZigiJWQiLCAmbik7Cglmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKXNjYW5mKCIlZCVkJWQiLCAmYVtpXS54LCAmYVtpXS55LCAmYVtpXS5wKTsKCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKCQlpbnQgcmVzID0gMDsKCQlkZnMoaSk7CgkJZm9yIChqID0gMDsgaiA8IG47IGorKykgewoJCQlyZXMgKz0gaXNfZ29uZVtqXTsKCQkJaXNfZ29uZVtqXSA9IDA7CgkJfQoJCWlmIChhbnMgPCByZXMpYW5zID0gcmVzOwoJfQoJcHJpbnRmKCIlZCIsIGFucyk7CglyZXR1cm4gMDsKfQ==