#include <bits/stdc++.h>
#define rep(i,n) for(int i=1;i<=n;++i)
#define N 1005
using namespace std;
typedef long long ll;
int b[N],v[N<<1],c[N<<1],f[N<<1],tot=1;
int a[N][N],e[N],p[N],n,nn,tp,sum=0;
void adds(int x,int y,int z){v[++tot]=y,c[tot]=z,f[tot]=b[x],b[x]=tot;}
bool add(int x,int y,int z){
	if(z<0)return 0;
	//printf("%d %d %d\n",x,y,z);
	adds(x,y,z);adds(y,x,z);sum+=z;
	return 1;
}
int top;
bool cmp(int x,int y){
	if(p[x]!=p[y])return p[x]<p[y];
	return a[top][x]-p[x]<a[top][y]-p[y];
}
bool build(int x,int l,int r){
	//printf("Case:%d %d %d\n",x,l,r);
	if(l>r)return 1;
	for(int i=l+1;i<=r;++i)p[e[i]]=(a[x][e[i]]-a[e[l]][e[i]]+a[x][e[l]])>>1;
	top=x;sort(b+l+1,b+r+1,cmp);p[e[l]]=0;p[e[r+1]]=-1;
	int st=0,hd=x,la=0;
	for(int i=l+1;i<=r;){
		st=i;
		if(p[e[st]]==a[x][e[l]]){if(!add(hd,e[l],p[e[st]]-la))return 0;la=p[e[st]];hd=e[l];}
		else if(p[e[st]]!=0){
			if(a[x][e[st]]-p[e[st]]==0)tp=e[st];else tp=++n;
			if(!add(hd,tp,p[e[st]]-la))return 0;
			la=p[e[st]];hd=tp;if(a[x][e[st]]-p[e[st]]==0)++st;
		}
		//printf("%d\n",hd);
		do{
			tp=a[x][e[i]]-p[e[i]];
			a[hd][e[i]]=a[e[i]][hd]=tp;
		}while(++i,p[e[i]]==p[e[i-1]]);
		if(!build(hd,st,i-1))return 0;
	}
	//printf("%d %d\n",p[e[r]]);
	//printf("%d\n",la);
	if(hd!=e[l])if(!add(hd,e[l],a[x][e[l]]-la))return 0;
	return 1;
}
bool check(int x,int fa,int dis){
	if(x<=nn&&a[x][top]!=dis)return 0;
	for(int i=b[x];i;i=f[i])if(v[i]!=fa&&!check(v[i],x,dis+c[i]))return 0;
	return 1;
}
ll ans=0;
int dfs(int x,int fa){
	int s=0;
	for(int i=b[x];i;i=f[i])if(v[i]!=v[fa])s+=dfs(v[i],i^1);
	if(fa){
		//printf("%d\n",c[fa]);
	//s c[fa]+1 sum-s-c[fa]
	//printf("%d %d %d\n",s+1,c[fa]+1,sum-s-fa);
	//printf("%d %d\n",x,v[fa]);ll anss=ans;
	ans+=1ll*c[fa]*(2*s+c[fa]+1)*(sum-s-c[fa])/2;
	ans+=1ll*c[fa]*(c[fa]+1)*s/2;
	ans+=1ll*(c[fa])*(c[fa]+1)*(c[fa]+2)/6;
	//printf("%lld\n",anss-ans);
	//printf("%lld\n",ans);
	}
	return s+c[fa];
}
int main(){
	//freopen("D.in","r",stdin);
	scanf("%d",&n);rep(i,n)e[i]=i;nn=n;
	rep(i,n-1)rep(j,n-i)scanf("%d",&a[i][i+j]),a[i+j][i]=a[i][i+j];
	if(!build(n,1,n-1)){puts("impossible");return 0;};
	rep(i,nn){
		top=i;
		if(!check(i,0,0)){puts("impossible");return 0;}
	}
	dfs(1,0);
	//printf("%lld\n",ans);
	printf("%.12lf\n",2.0*ans/sum/(sum+1));
	return 0;
}
