N different natural numbers are given. If you select four different ones and set them as $ A $, $ B $, $ C $, $ D $, the following formula

$ \ Frac {A + B} {C --D} $



I want to find the maximum value of.




Given N different natural numbers, choose 4 different from them and create a program to find the maximum value of the above formula.



Input

The input is given in the following format.


N
a1 a2 ... aN


The number N (4 ≤ N ≤ 1000) of natural numbers is given in the first line. The value ai (1 ≤ ai ≤ 108) of each natural number is given in the second line. However, the same natural number does not appear more than once (ai ≠ aj for i ≠ j).

Output

Outputs the maximum value of the above formula as a real number for a given N natural numbers. However, the error must not exceed plus or minus 10-5.

Examples

Input

10
1 2 3 4 5 6 7 8 9 10


Output

19.00000


Input

5
22 100 42 3 86


Output

9.78947


Input

6
15 21 36 10 34 5


Output

18.00000


Input

4
100000 99999 8 1


Output

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

#define rep(a,b) for(int a=0; a<b; ++a)

using ll=long long;

template<typename T>
using vec=vector<T>;

int main(void){
	int N; cin>>N;
	vec<ll> a(N); rep(i,N) cin>>a[i];
	sort(a.begin(),a.end());
	int bunbo,bunsi;
	double ans,tmp;
	
	// 分母優先で考えた場合
	int idx,dif=INT_MAX;
	for(int i=1; i<N; ++i){
		if(a[i]-a[i-1]<dif){
			idx=i,dif=a[i]-a[i-1];
		}
	}
	auto va=a;
	bunbo=va[idx]-va[idx-1];
	va.erase(va.begin()+idx),va.erase(va.begin()+idx-1);
	ans=(double)(va[va.size()-2]+va[va.size()-1])/bunbo;
	
	// 分子優先で考えた場合
	bunsi=a[N-1]+a[N-2];
	dif=INT_MAX;
	for(int i=1; i<N-2; ++i){
		if(a[i]-a[i-1]<dif){
			idx=i,dif=a[i]-a[i-1];
		}
	}
	tmp=(double)bunsi/(a[idx]-a[idx-1]);
	
	cout<<fixed<<setprecision(10)<<max(ans,tmp)<<endl;
}
