public class Euler589 {
    public static String solve() {
        int k=100;double s=0;for(int m=2;m<=k;m++)for(int n=1;n<m;n++)s+=computeE(n,m);
        return String.format("%.2f",s);}
    static double computeE(int n,int m){int a=n+5,b=m+5,L=m-n+1,M=b;double invL=1.0/L;int N=2*M+2;
        double[] mat=new double[N*N],rhs=new double[N];
        for(int r=1;r<=M;r++){int r0=r-1,r1=M+r-1;mat[r0*N+r0]=1;int ll=a,lr=Math.min(b,r-1);
            int leftCnt=Math.max(0,lr-ll+1);int rl2=Math.max(a,r+1),rr2=b;int rightCnt=Math.max(0,rr2-rl2+1);
            int mid=(a<=r&&r<=b)?1:0;int iA0=2*M,iA1=2*M+1;
            if(mid!=0)mat[r0*N+iA0]-=invL;
            if(leftCnt>0){int lk1=Math.max(1,r-lr),lk2=r-ll;for(int kk=lk1;kk<=lk2;kk++)mat[r0*N+M+kk-1]-=invL;}
            if(rightCnt>0){int rk1=Math.max(1,rl2-r),rk2=rr2-r;for(int kk=rk1;kk<=rk2;kk++)mat[r0*N+M+kk-1]-=invL;}
            double leftSumV=leftCnt>0?0.5*(ll+lr)*leftCnt:0;
            rhs[r0]=(leftSumV+rightCnt*r+(mid!=0?r:0))*invL;
            mat[r1*N+r1]=1;if(mid!=0)mat[r1*N+iA1]-=invL;
            if(rightCnt>0){int rk1=Math.max(1,rl2-r),rk2=rr2-r;for(int kk=rk1;kk<=rk2;kk++)mat[r1*N+kk-1]-=invL;}
            rhs[r1]=rhs[r0];}
        int iA0=2*M,iA1=2*M+1;mat[iA0*N+iA0]=1;for(int r=a;r<=b;r++)mat[iA0*N+r-1]-=invL;
        mat[iA1*N+iA1]=1;for(int r=a;r<=b;r++)mat[iA1*N+M+r-1]-=invL;
        for(int i=0;i<N;i++){int pivot=i;double mx=Math.abs(mat[i*N+i]);
            for(int row=i+1;row<N;row++){double v=Math.abs(mat[row*N+i]);if(v>mx){mx=v;pivot=row;}}
            if(pivot!=i){for(int c=i;c<N;c++){double t=mat[i*N+c];mat[i*N+c]=mat[pivot*N+c];mat[pivot*N+c]=t;}
                double t=rhs[i];rhs[i]=rhs[pivot];rhs[pivot]=t;}
            double pv=mat[i*N+i];for(int row=i+1;row<N;row++){double f=mat[row*N+i]/pv;if(f==0)continue;
                for(int c=i;c<N;c++)mat[row*N+c]-=f*mat[i*N+c];rhs[row]-=f*rhs[i];}}
        double[] sol=new double[N];for(int i=N-1;i>=0;i--){double ss=rhs[i];
            for(int c=i+1;c<N;c++)ss-=mat[i*N+c]*sol[c];sol[i]=ss/mat[i*N+i];}
        double avgA0=sol[iA0];double total=0;
        for(int ta=n;ta<=m;ta++)for(int tb=n;tb<=m;tb++){if(ta<tb)total+=ta+sol[M+tb-ta-1];
            else if(tb<ta)total+=tb+sol[M+ta-tb-1];else total+=ta+avgA0;}
        return total*invL*invL;}
    public static void main(String[] args){System.out.println(solve());}
}
