#include<iostream>
#include<iomanip>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
struct p
{
int x; int y; int z;
};
bool cmp(p a, p b) { return a.z < b.z; }
int main()
{
int n; cin >> n; vector<p> a(n);
for (int i = 0; i < n; i++)
{
cin >> a[i].x >> a[i].y >> a[i].z;
}
sort(a.begin(), a.end(), cmp);
int ae = a.size() - 1;
double ans= static_cast<double>(sqrt(pow((a[0].x - a[ae].x), 2) + pow((a[0].y - a[ae].y), 2) + pow((a[0].z - a[ae].z), 2)));
cout << fixed << setprecision(3) << ans;
return 0;
}