#include <iostream>
#include<set>
#include<vector>
using namespace std;
int mod=998244353;
int add(int x, int y)
{
	int c=x+y;
	if(c>=mod)c-=mod;
	return c;
}
int sub(int x, int y)
{
	int c=x-y;
	if(c<0)c+=mod;
	return c;
}
int mlt(int x, int y)
{
	long long c=x*1LL*y;
	if(c>=mod)c%=mod;
	return c;
}
int main()
{
	int n;
	cin>>n;
	vector<long double>a(n), b(n);
	int pos=0;
	for(int i=0; i<n; i++)
	{
		cin>>a[i];
		if(a[i]>a[pos])pos=i;
	}
	for(int i=0; i<n; i++)cin>>b[i];
	vector<long double>a1,b1;
	for(int i=pos; i<n; i++)
	{
		a1.push_back(a[i]);
		b1.push_back(b[i]);
	}
	for(int i=0; i<=pos; i++)
	{
		a1.push_back(a[i]);
		b1.push_back(b[i]);
	}
	long double cursum=a1[0];
	vector<long double> koefs(n+1), left(n+1), right(n+1), prob(n+1);
	vector<int>nxt(n+1), prev(n+1);
	set<int>positive;
	for(int i=1; i<n; i++)
	{
		prob[i]=1.0/(long double)n;
		left[i]=0.5;
		right[i]=0.5;
		cursum+=a1[i];
		koefs[i]=a1[i-1]/2.0+a1[i+1]/2.0-a1[i]-b1[i];
		if(koefs[i]>0)positive.insert(i);
	}
	cursum/=(long double)n;
	for(int i=0; i<n; i++)
	{
		nxt[i]=i+1;
		prev[i+1]=i;
	}
	set<int>::iterator it;
	while(positive.size()>0)
	{
		/*for(it=positive.begin();it!=positive.end(); it++)cerr<<*it<<' ';
		cerr<<endl;
		for(int i=0; i<=n; i++)cerr<<' '<<koefs[i]<<' '<<left[i]<<' '
		<<right[i]<<' '<<prob[i]<<' '<<nxt[i]<<' '
		<<prev[i]<<endl;
		cerr<<endl;*/
		it=positive.begin();
		int p=*it, pr=prev[p], nx=nxt[p];
		positive.erase(p);
		cursum+=prob[p]*koefs[p];
		prob[pr]+=prob[p]*left[p];
		prob[nx]+=prob[p]*right[p];
		long double valpr, prl=left[pr], prr=right[pr], stay;
		stay=prr*left[p];
		prr=prr*right[p];
		long double sum=prl+prr;
		prl/=sum;
		prr/=sum;
		left[pr]=prl;
		right[pr]=prr;
		long double esc=koefs[pr]+prr*koefs[p], rem=koefs[pr]+koefs[p];
	//	cerr<<"sasa "<<esc<<' '<<rem<<' '<<stay<<endl;
		valpr=esc+rem/(1.0-stay)-rem;
		koefs[pr]=valpr;
		if(valpr>0)
			if(pr>0)
				positive.insert(pr);
		prl=left[nx], prr=right[nx];
	//	cerr<<nx<<' '<<prl<<' '<<prr<<' '<<right[pr]<<endl;
		stay=prl*right[p];
		prl=prl*left[p];
		sum=prl+prr;
		prl/=sum;
		prr/=sum;
		left[nx]=prl;
		right[nx]=prr;
		esc=koefs[nx]+prl*koefs[p], rem=koefs[nx]+koefs[p];
		valpr=esc+rem/(1.0-stay)-rem;
	//	cerr<<"sasa "<<esc<<' '<<rem<<' '<<stay<<endl;
		koefs[nx]=valpr;
		if(valpr>0)
			if(nx>0)
				positive.insert(nx);
		nxt[pr]=nx;
		prev[nx]=pr;
	}
	cout.precision(25);
	cout<<cursum<<endl;
}
