#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define all(x) x.begin(),x.end()
#define cmin(a,b) (a>b?a=b:a)
#define cmax(a,b) (a<b?a=b:a)
#define mem(a,k) memset(a,k,sizeof(a))
#define lop(i,s,t) for(int i=s;i<(t);++i)
#define rep(i,s,t) for(int i=s;i<=(t);++i)
#define dec(i,s,t) for(int i=s;i>=(t);--i)
#define fore(i,v) for(int i=g[v],d=es[i].d;i;i=es[i].nxt,d=es[i].d)
using namespace std;

#define Pr(f,...) fprintf(stderr,f,##__VA_ARGS__),fflush(stderr)

typedef long long ll;

template<typename T>
void read(T &x){
	x=0; 
	char c;
	for(c=getchar();!isdigit(c);c=getchar()); 
	for(;isdigit(c);c=getchar())x=x*10+c-'0'; 
}

const int N=(int)(6e5+50)<<2;

/*
int mul(int a,int b){ return 1ll*a*b%P; }
int add(int a,int b){ a+=b; return a>=P?a-P:a; }
int sub(int a,int b){ a-=b; return a<0?a+P:a; }
int gcd(int a,int b){ return !b?a:gcd(b,a%b); }
*/

struct P { ll x, y; } ; 
typedef P V; 
V operator-(const P& a, const P& b){ return (V){a.x-b.x,a.y-b.y}; }
ll det(P a, P b) { return a.x*b.y-b.x*a.y; } 

P s[N]; 
int n, tp; 
ll a[N], b[N], c[N]; 
ll ans; 
int main(int argc,char *argv[]){
#ifdef CURIOUSCAT
	freopen("d.in", "r", stdin); 
#endif
	read(n); 
	rep(i, 1, n) read(a[i]); 
	rep(i, 1, n) read(b[i]); 
	ll* p = max_element(a+1, a+n+1); 
	rotate(a+1, p, a+n+1); 
	rotate(b+1, b+(p-a), b+n+1); 
	++n, a[n] = a[1], b[n] = b[1];
	rep(p, 2, n-1) c[p+1] = 2*c[p]+2*b[p]-c[p-1];
	rep(i, 1, n) {
		P v=(P){i,a[i]-c[i]};
		while(tp>=2 && det(s[tp-1]-s[tp-2],v-s[tp-2])>=0) --tp;
		s[tp++] = v;
	}
	lop(i, 1, tp){
		ll dx = s[i].x-s[i-1].x;
		ans += (dx+1) * s[i-1].y + (dx-1)*s[i].y;
	}
	lop(i, 1, n) ans += 2 * c[i]; 
	printf("%.12f\n", (double)ans/(n-1)/2); 
	return 0; 
}
