Problem: Find the diameter of a convex polygon g. In other words, find a pair of points that have maximum distance between them.

Constraints

* 3 ≤ n ≤ 80000
* -100 ≤ xi, yi ≤ 100
* No point in the g will occur more than once.

Input


n
x1 y1
x2 y2
:
xn yn


The first integer n is the number of points in g.

In the following lines, the coordinate of the i-th point pi is given by two real numbers xi and yi. The coordinates of points are given in the order of counter-clockwise visit of them. Each value is a real number with at most 6 digits after the decimal point.

Output

Print the diameter of g in a line. The output values should be in a decimal fraction with an error less than 0.000001.

Examples

Input

3
0.0 0.0
4.0 0.0
2.0 2.0


Output

4.00


Input

4
0.0 0.0
1.0 0.0
1.0 1.0
0.0 1.0


Output

1.414213562373

Solution (in PYTHON3):

Solution:
from typing import List


def cross(a: complex, b: complex) -> float:
    return a.real * b.imag - a.imag * b.real


def distance(i: int, j: int, coordinates: List[complex]) -> float:
    return abs(coordinates[i] - coordinates[j])


if __name__ == "__main__":
    n = int(input())
    points = [tuple(map(float, input().split())) for _ in range(n)]
    min_x_idx = min(range(n), key=lambda x: points[x])
    max_x_idx = max(range(n), key=lambda x: points[x])
    coordinates = [re + 1j * im for re, im in points]
    coordinates.append(coordinates[0])

    ans = distance(min_x_idx, max_x_idx, coordinates)
    i, j = min_x_idx, max_x_idx
    while True:
        if 0 <= cross(coordinates[i + 1] - coordinates[i],
                      coordinates[j + 1] - coordinates[j]):
            j = (j + 1) % n
        else:
            i = (i + 1) % n
        ans = max(ans, distance(i, j, coordinates))

        if min_x_idx == i and max_x_idx == j:
            break

    print(ans)