#include using namespace std; typedef long long ll; typedef long double ld; typedef pair ii; typedef vector vi; typedef vector vvi; typedef vector vvvi; typedef vector vvvvi; typedef vector vii; #define x first #define y second #define pb push_back #define eb emplace_back #define all(v) (v).begin(), (v).end() const ll m = 100; const ll maxX = 1'000'000'000; const ll bs = maxX/m + 1; void run() { ll n; cin >> n; vvvvi X(m, vvvi(m, vvi(m))), Y(m, vvvi(m, vvi(m))), Z(m, vvvi(m, vvi(m))); ll x, y, z; while (cin >> x >> y >> z) { ll xb = x/bs, yb = y/bs, zb = z/bs; X[xb][yb][zb].pb(x); Y[xb][yb][zb].pb(y); Z[xb][yb][zb].pb(z); } ld res = maxX*3+3; for (ll i = 0; i < m-1; i++) { for (ll j = 0; j < m-1; j++) { for (ll k = 0; k < m-1; k++) { vi xs, ys, zs; for (ll id = 0; id <= 1; id++) { for (ll jd = 0; jd <= 1; jd++) { for (ll kd = 0; kd <= 1; kd++) { xs.insert(xs.end(), all(X[i+id][j+jd][k+kd])); ys.insert(ys.end(), all(Y[i+id][j+jd][k+kd])); zs.insert(zs.end(), all(Z[i+id][j+jd][k+kd])); } } } for (ll a = 0; a < xs.size(); a++) { for (ll b = 0; b < xs.size(); b++) { if (a == b) continue; res = min(res, sqrt((ld) (xs[a]-xs[b])*(xs[a]-xs[b]) + (ys[a]-ys[b])*(ys[a]-ys[b]) + (zs[a]-zs[b])*(zs[a]-zs[b]))); } } } } } cout << res << endl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); cout << fixed << setprecision(20); run(); return 0; }