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 CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;

struct Point {
    double x, y;

    Point() = default;
    Point(double x, double y) : x(x), y(y) {}

    Point operator+(const Point &rhs) const {
        return Point(x + rhs.x, y + rhs.y);
    }

    Point operator-(const Point &rhs) const {
        return Point(x - rhs.x, y - rhs.y);
    }

    double operator*(const Point &rhs) const {
        return x * rhs.x + y * rhs.y;
    }

    double operator%(const Point &rhs) const {
        return x * rhs.y - y * rhs.x;
    }

    bool operator<(const Point &rhs) const {
        return x == rhs.x ? y < rhs.y : x < rhs.x;
    }
};

double diameter(const vector<Point> &p) {
    int n = (int)p.size();
    int j = -1;
    for (int i = 0; i < n; ++i) {
        if (j == -1 || (p[0] - p[j]) * (p[0] - p[j]) < (p[0] - p[i]) * (p[0] - p[i])) j = i;
    }
    double res = (p[0] - p[j]) * (p[0] - p[j]);
    for (int i = 1; i < n; ++i) {
        while ((p[i] - p[j]) * (p[i] - p[j]) <= (p[i] - p[(j + 1) % n]) * (p[i] - p[(j + 1) % n])) j = (j + 1) % n;
        res = max(res, (p[i] - p[j]) * (p[i] - p[j]));
    }
    return sqrt(res);
}

int main() {
    int n; scanf("%d", &n);
    vector<Point> p(n);
    for (int i = 0; i < n; ++i) scanf("%lf%lf", &p[i].x, &p[i].y);
    printf("%.20lf\n", diameter(p));
}