#include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <queue> #include <algorithm> #include <vector> #include <cstring> #include <stack> #include <cctype> #include <utility> #include <map> #include <string> #include <climits> #include <set> #include <string> #include <sstream> #include <utility> #include <ctime> using std::priority_queue; using std::vector; using std::swap; using std::stack; using std::sort; using std::max; using std::min; using std::pair; using std::map; using std::string; using std::cin; using std::cout; using std::set; using std::queue; using std::string; using std::istringstream; using std::make_pair; using std::greater; const int MAXN(1010); struct NODE { int color; int state[2]; }; NODE node[MAXN]; int x[MAXN], y[MAXN], z[MAXN]; struct EDGE { int ind1, ind2; double r; friend bool operator <(const EDGE &op1, const EDGE &op2) { return op1.r < op2.r; } }; EDGE edge[MAXN*MAXN]; double dist(int i, int j) { return (x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])+(z[i]-z[j])*(z[i]-z[j]); } int tans; void updata(int ind) { int i = edge[ind].ind1, j = edge[ind].ind2; tans -= node[i].state[node[i].color] < node[i].state[node[i].color^1]; tans -= node[j].state[node[j].color] < node[j].state[node[j].color^1]; ++node[i].state[node[j].color]; ++node[j].state[node[i].color]; tans += node[i].state[node[i].color] < node[i].state[node[i].color^1]; tans += node[j].state[node[j].color] < node[j].state[node[j].color^1]; } int main() { int N; while(~scanf("%d", &N)) { for(int i = 1; i <= N; ++i) { scanf("%d%d%d%d", x+i, y+i, z+i, &node[i].color); node[i].state[node[i].color] = 1; node[i].state[node[i].color^1] = 0; } int count = 0; for(int i = 1; i <= N; ++i) for(int j = i+1; j <= N; ++j) { edge[++count].ind1 = i; edge[count].ind2 = j; edge[count].r = dist(i, j); } sort(edge+1, edge+1+count); edge[count+1].r = -1; int ans = 0; double ar = 0; tans = 0; for(int i = 1; i <= count; ++i) { int l = i; int r = i; updata(l); while(edge[r+1].r == edge[l].r) updata(++r); if(tans > ans) { ans = tans; ar = edge[l].r; } i = r; } printf("%d\n%.4f\n", ans, sqrt(ar)); } return 0; }