#include <bits/stdc++.h>
using namespace std;
template <typename T>
void print(T a) {
  for (auto x : a) cout << x << ' ';
  cout << '\n';
}
vector<pair<long double, long double> > lines1;
vector<long double> dots1;
long double intersection(pair<long double, long double> l1,
                         pair<long double, long double> l2) {
  return (l2.second - l1.second) / (l1.first - l2.first);
}
void add_mx(long double k, long double b) {
  while ((long long)(lines1).size() >= 2) {
    long double x =
        intersection(lines1[(long long)(lines1).size() - 2], {k, b});
    if (x <= dots1.back()) {
      dots1.pop_back();
      lines1.pop_back();
    } else
      break;
  }
  if ((long long)(lines1).size())
    dots1.push_back(
        intersection(lines1[(long long)(lines1).size() - 1], {k, b}));
  lines1.push_back({k, b});
}
long double get_mx(long double x) {
  long long id = lower_bound((dots1).begin(), (dots1).end(), x) - dots1.begin();
  return lines1[id].first * x + lines1[id].second;
}
vector<pair<long double, long double> > lines2;
vector<long double> dots2;
void add_mn(long double k, long double b) {
  while ((long long)(lines2).size() >= 2) {
    long double x =
        intersection(lines2[(long long)(lines2).size() - 2], {k, b});
    if (x <= dots2.back()) {
      dots2.pop_back();
      lines2.pop_back();
    } else
      break;
  }
  if ((long long)(lines2).size())
    dots2.push_back(
        intersection(lines2[(long long)(lines2).size() - 1], {k, b}));
  lines2.push_back({k, b});
}
long double get_mn(long double x) {
  long long id = lower_bound((dots2).begin(), (dots2).end(), x) - dots2.begin();
  return lines2[id].first * x + lines2[id].second;
}
const long double PI = acos(-1);
long double get_angle(pair<long double, long double> v) {
  long double gyp = sqrt(v.first * v.first + v.second * v.second);
  long double cs = v.first / gyp;
  return acos(cs) * 180.0 / PI;
}
void solve() {
  long long n;
  cin >> n;
  vector<vector<long double> > s;
  vector<pair<long double, long double> > lines;
  long double left_most = 1e18, right_most = -1e18;
  for (long long i = 0; i < n; i++) {
    long double a, b, c;
    cin >> a >> b >> c;
    left_most = min(left_most, a);
    right_most = max(right_most, b);
    s.push_back({c, a, b});
    lines.push_back({c, a});
    lines.push_back({c, b});
  }
  sort((lines).begin(), (lines).end());
  vector<pair<long double, long double> > lines_mx, lines_mn;
  for (long long i = 0; i < (long long)(lines).size(); i++) {
    if (i != 0 && lines[i].first == lines[i - 1].first) {
      lines_mx.pop_back();
      lines_mx.push_back(lines[i]);
    } else {
      lines_mx.push_back(lines[i]);
      lines_mn.push_back(lines[i]);
    }
  }
  for (long long i = 0; i < (long long)(lines_mx).size(); i++)
    add_mx(lines_mx[i].first, lines_mx[i].second);
  for (long long i = (long long)(lines_mn).size() - 1; i >= 0; i--)
    add_mn(lines_mn[i].first, lines_mn[i].second);
  sort((s).begin(), (s).end());
  vector<pair<long double, long long> > event;
  for (long long i = 0; i < n; i++) {
    for (long long j = 0; j < i; j++) {
      if (s[j][0] == s[i][0]) continue;
      pair<long double, long double> v1(s[j][2] - s[i][1], s[j][0] - s[i][0]);
      pair<long double, long double> v2(s[j][1] - s[i][2], s[j][0] - s[i][0]);
      long double angle1 = get_angle(v1), angle2 = get_angle(v2);
      event.push_back({angle1, 1});
      event.push_back({angle2, -1});
    }
  }
  sort((event).begin(), (event).end());
  if ((long long)(event).size() == 0) {
    cout << fixed << setprecision(10) << right_most - left_most;
    return;
  }
  long long balance = 0;
  vector<long double> angles;
  for (long long i = 0; i < (long long)(event).size(); i++) {
    if (event[i].second == 1) {
      if (balance == 0) angles.push_back(event[i].first);
      balance++;
    } else {
      balance--;
      if (balance == 0) angles.push_back(event[i].first);
    }
  }
  long double ans = 1e18;
  for (long double angle : angles) {
    long double ct = 1.L / tan(angle / 180.0 * PI);
    ans = min(ans, get_mx(ct) - get_mn(ct));
  }
  cout << fixed << setprecision(10) << ans;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long t = 1;
  for (long long i = 0; i < t; i++) {
    solve();
  }
  return 0;
}
