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>
#define lb long double
#define N 100010 
using namespace std;
struct Po{lb x,y;}a[N];
int n;
lb ansn;
Po operator -(Po x,Po y){return (Po){x.x-y.x,x.y-y.y};}
lb operator *(Po x,Po y){return x.x*y.y-x.y*y.x;}
void get(Po &x){scanf("%Lf %Lf",&x.x,&x.y);}
int pa(int x){if (x>n)x-=n;return x;}
lb le(Po x){return sqrtl(x.x*x.x+x.y*x.y);}
int main(){
	scanf("%d",&n);
	for (int i=1;i<=n;i++) get(a[i]);
	for (int i=1,j=2;i<=n;i++){
		while((a[pa(i+1)]-a[i])*(a[j]-a[i])<=(a[pa(i+1)]-a[i])*(a[pa(j+1)]-a[i]))j=pa(j+1);
		ansn=max(ansn,max(le(a[j]-a[i]),le(a[j]-a[pa(i+1)])));
	}
	printf("%.10Lf\n",ansn);
	return 0;
}