The main road in Bytecity is a straight line from south to north. Conveniently, there are coordinates measured in meters from the southernmost building in north direction.

At some points on the road there are *n* friends, and *i*-th of them is standing at the point *x*<sub class="lower-index">*i*</sub> meters and can move with any speed no greater than *v*<sub class="lower-index">*i*</sub> meters per second in any of the two directions along the road: south or north.

You are to compute the minimum time needed to gather all the *n* friends at some point on the road. Note that the point they meet at doesn't need to have integer coordinate.
The first line contains single integer *n* (2 ≤ *n* ≤ 60 000) — the number of friends.

The second line contains *n* integers *x*<sub class="lower-index">1</sub>, *x*<sub class="lower-index">2</sub>, ..., *x*<sub class="lower-index">*n*</sub> (1 ≤ *x*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">9</sup>) — the current coordinates of the friends, in meters.

The third line contains *n* integers *v*<sub class="lower-index">1</sub>, *v*<sub class="lower-index">2</sub>, ..., *v*<sub class="lower-index">*n*</sub> (1 ≤ *v*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">9</sup>) — the maximum speeds of the friends, in meters per second.
In the first sample, all friends can gather at the point 5 within 2 seconds. In order to achieve this, the first friend should go south all the time at his maximum speed, while the second and the third friends should go north at their maximum speeds.
3
7 1 3
1 2 1
2.000000000000
4
5 10 3 2
2 3 2 4
1.400000000000
3
1 1000000000 2
1 2 1000000000
333333332.999999999971
2
4 5
10 8
0.055555555556
4
14 12 10 17
8 6 5 10
0.466666666667
5
1 15 61 29 43
15 11 19 19 19
1.764705882353
10
20 11 17 38 15 27 2 40 24 37
22 30 22 30 28 16 7 20 22 13
1.750000000000
2
1000000000 1000000000
1 1
0.000000000000
3
1 1 1
1 1 1
0.000000000000
def min_time(xs, vs):
    def good(time):
        mn, mx = float("-inf"), float("inf")
        for x, v in zip(xs, vs):
            mn = max(mn, x - time * v)
            mx = min(mx, x + time * v)
        return mn <= mx

    l, r = 0, 10 ** 18
    for _ in range(100):
        m = l + (r - l) / 2
        if good(m):
            r = m
        else:
            l = m
    return r


n = int(input())
xs = [int(i) for i in input().split()]
vs = [int(i) for i in input().split()]

print(min_time(xs, vs))
