#include <stdio.h>
#include <stdlib.h>
double determinant(double **a, int n)
{
if(n == 1)
return a[0][0];
if(n == 2)
return a[0][0]*a[1][1] - a[0][1]*a[1][0];
double det = 0;
for(int k = 0; k < n; k++)
{
double **minor = malloc((n-1) * sizeof(double *));
for(int i = 0; i < n-1; i++)
minor[i] = malloc((n-1) * sizeof(double));
for(int i = 1; i < n; i++)
{
int col = 0;
for(int j = 0; j < n; j++)
{
if(j == k)
continue;
minor[i-1][col] = a[i][j];
col++;
}
}
double sign = (k % 2 == 0) ? 1 : -1;
det += sign * a[0][k] * determinant(minor, n-1);
for(int i = 0; i < n-1; i++)
free(minor[i]);
free(minor);
}
return det;
}
int main()
{
int n;
if(scanf("%d",&n)!=1 || n<=0)
{
printf("n/a");
return 1;
}
double **matrix = malloc(n*sizeof(double *));
for(int i=0;i<n;i++)
matrix[i]=malloc(n*sizeof(double));
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%lf",&matrix[i][j]);
printf("%.6lf", determinant(matrix,n));
for(int i=0;i<n;i++)
free(matrix[i]);
free(matrix);
return 0;
}