#include<bits/stdc++.h>
using namespace std;
struct cow{int x,y,p;}cows[2005];
int n,c[2005][2005],vis[2005],tmp;
bool comp(int f,int t){
return (f!=t)&&(((cows[f].x-cows[t].x)*(cows[f].x-cows[t].x)+(cows[f].y-cows[t].y)*(cows[f].x-cows[t].y))<(cows[f].p*cows[f].p));
}
void dfs(int cur){
if(vis[cur]==1)return;
vis[cur]=1;tmp++;
for(int i=1;i<=n;i++){
if(c[cur][i]==1&&vis[i]==0)dfs(i);
}
return;
}
int main(){
cin>>n;memset(c,0,sizeof(c));
for(int i=1;i<=n;i++){
cin>>cows[i].x>>cows[i].y>>cows[i].p;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(comp(i,j))c[i][j]=true;
}
}
int ans=0;
for(int i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
tmp=0;dfs(i);
cout<<i<<" "<<tmp<<"\n";
ans=max(ans,tmp);
}
cout<<ans;
return 0;
}