#include<bits/stdc++.h>
using namespace std;
int n,m=8;
const int N = 16;
int s[N][N];
double f[N][N][N][N][N];
double Xb;
double get(int x1,int y1,int x2,int y2)//求矩阵的和减均值的平方
{
double t = s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1]-Xb;
return t*t;
}
double dp(int k,int x1,int y1,int x2,int y2)
{
if(f[k][x1][y1][x2][y2]>=0) return f[k][x1][y1][x2][y2];
if(k==n) return f[k][x1][y1][x2][y2] = get(x1,y1,x2,y2);
double t = 1e9;//初始化无穷大
for(int i=x1;i<x2;i++)//横着切
{
t = min(t,dp(k+1,x1,y1,i,y2)+get(i+1,y1,x2,y2));
t = min(t,dp(k+1,i+1,y1,x2,y2)+get(x1,y1,i,y2));//
}
for(int i=y1;i<y2;i++)
{
t = min(t,dp(k+1,x1,y1,x2,i)+get(x1,i+1,x2,y2));
t = min(t,dp(k+1,x1,i+1,x2,y2)+get(x1,y1,x2,i));
}
return f[k][x1][y1][x2][y2]=t;
}
int main()
{
cin>>n;//划分为几个
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
{
cin>>s[i][j];
}
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
{
s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];//二维前缀和
}
memset(f,-1,sizeof f);//初始化为-1
Xb = (double)s[m][m]/n;
printf("%.3lf\n",sqrt(dp(1,1,1,m,m)/n));
return 0;
}