#!/usr/bin/python3

def cross(u, v):
    return (u[1]*v[2] - u[2]*v[1], u[2]*v[0] - u[0]*v[2], u[0]*v[1] - u[1]*v[0])

n = int(input())
best = None
yaxis = cross((0, 0, 1), (0, 1, 1))
for _i in range(n):
    x1, y1, x2, y2 = map(int, input().split())
    x, y, z = cross(yaxis, cross((x1, y1, 1), (x2, y2, 1)))
    if z != 0:
        x, y = x/z, y/z
        if y > 0 and min(x1, x2) <= x <= max(x1, x2):
            best = y if best == None else min(best, y)

print (-1 if best == None else best)
