rendered paste bodyimport java.io.*;
import java.util.*;
import java.util.regex.*;
import static java.lang.System.*;
public class prtestmat
{
public static void main(String argv[]) throws Throwable
{
Scanner cin=new Scanner(new File("prtestmat.dat"));
int timesToGo = cin.nextInt();
cin.nextLine();
String[] g = new String[timesToGo];
for(int asdf=0; asdf<timesToGo; asdf++)
{
int n = cin.nextInt();
double a[][] = new double[n][n];
double b[] = new double[n];
int ind[] = new int[n];
for(int y =0;y<n;y+=1)
{
for(int x=0;x<n;x+=1)
{
a[y][x] = cin.nextDouble();
}
b[y] = cin.nextDouble();
}
double x[] = solve(a, b, ind);
for (int i=0; i<n; i++)
System.out.println(""+(char)('a'+i)+" = " + Math.round(x[i]));
}
}
public static double[] solve(double a[][],double b[], int ind[])
{
int n = b.length;
double x[] = new double[n];
gausiate(a, ind);
for(int i=0; i<n-1; ++i)
{
for(int j =i+1; j<n; ++j)
{
b[ind[j]] -= a[ind[j]][i]*b[ind[i]];
}
}
x[n-1] = b[ind[n-1]]/a[ind[n-1]][n-1];
for (int i=n-2; i>=0; --i)
{
x[i] = b[ind[i]];
for (int j=i+1; j<n; ++j)
{
x[i] -= a[ind[i]][j]*x[j];
}
x[i] /= a[ind[i]][i];
}
return x;
}
public static void gausiate(double a[][],int ind[])
{
int n = ind.length;
double c[] = new double[n];
for (int i=0; i<n; ++i)
ind[i] = i;
for (int i=0; i<n; ++i) {
double c1 = 0;
for (int j=0; j<n; ++j)
{
double c0 = Math.abs(a[i][j]);
if (c0 > c1) c1 = c0;
}
c[i] = c1;
}
int k = 0;
for (int j=0; j<n-1; ++j)
{
double pivind1 = 0;
for (int i=j; i<n; ++i)
{
double pivind0 = Math.abs(a[ind[i]][j]);
pivind0 /= c[ind[i]];
if (pivind0 > pivind1)
{
pivind1 = pivind0;
k = i;
}
}
int itmp = ind[j];
ind[j] = ind[k];
ind[k] = itmp;
for (int i=j+1; i<n; ++i)
{
double pj = a[ind[i]][j]/a[ind[j]][j];
a[ind[i]][j] = pj;
for (int l=j+1; l<n; ++l)
a[ind[i]][l] -= pj*a[ind[j]][l];
}
}
}
}