#include <bits/stdc++.h>

using namespace std;

typedef long long lol;
const int N = 5e5 + 5;
int _w; 

int n;
lol A[N] , B[N] , C[N];

bool crs( int a , int b , int c ) {
  return ( b - a ) * ( A[c] - A[a] ) >= ( c - a ) * ( A[b] - A[a] );
}

int main( void ) {
  _w = scanf("%d",&n);
  for( int i = 1 ; i <= n ; ++i ) _w = scanf("%lld",A+i) , A[n + i] = A[i];
  for( int i = 1 ; i <= n ; ++i ) _w = scanf("%lld",B+i) , B[n + i] = B[i];
  lol mx = -1;
  for( int i = 1 ; i <= n ; ++i ) mx = max( mx , A[i] );
  for( int i = 1 , cur ; i <= n ; ++i ) if( A[i] == mx ) {
    cur = 0;
    for( int j = i ; j <= n ; ++j ) A[cur] = A[n + j] , B[cur] = B[n + j] , ++cur;
    for( int j = 1 ; j < i ; ++j ) A[cur] = A[n + j] , B[cur] = B[n + j] , ++cur;
    A[cur] = mx , B[cur] = B[n + i];
    break;
  }
  for( int i = 2 ; i <= n ; ++i ) {
    C[i] = (C[i - 1] + B[i - 1]) * 2 - C[i - 2];
    A[i] -= C[i];
  }
  static int S[N] , tp;
  tp = 0;
  for( int i = 0 ; i <= n ; ++i ) {
    while( tp > 1 && crs( S[tp - 1] , S[tp] , i ) ) --tp;
    S[++tp] = i;
  }
  long long ans = 0 , x;
  for( int i = 2 ; i <= tp ; ++i ) {
    x = S[i] - S[i - 1];
    ans += A[S[i - 1]] * ( x + 1 ) + A[S[i]] * ( x - 1 );
  }
  for( int i = 2 ; i < n ; ++i ) 
    ans += 2 * C[i];
  printf("%.12lf",double(ans)/(2.0*n));
  return 0;
}
