//package fuc;
importjava.io.PrintStream;importjava.math.BigInteger;importjava.util.Scanner;public classMain {public static voidmain(String[] args) {newTask().main();
}
}classfrac{
BigInteger a,b;
frac(){
a=BigInteger.ZERO;
b=BigInteger.ONE;
}
frac(BigInteger a,BigInteger b){this.a=a;this.b=b;
}
frac sub(frac t){
BigInteger p, q, d;
p=a.multiply(t.b);
p=p.subtract(t.a.multiply(b));
q=b.multiply(t.b);
d=p.gcd(q);
p=p.divide(d);
q=q.divide(d);return newfrac(p, q);
}
frac add(frac t){
BigInteger d, p, q;
p=a.multiply(t.b);
p=p.add(t.a.multiply(b));
q=b.multiply(t.b);
d=p.gcd(q);
p=p.divide(d);
q=q.divide(d);return newfrac(p, q);
}
frac div(frac t) {
BigInteger p, q, d;
p=a.multiply(t.b);
q=b.multiply(t.a);
d=p.gcd(q);
p=p.divide(d);
q=q.divide(d);return newfrac(p, q);
}
frac mul(frac t) {
BigInteger p, q, d;
p=a.multiply(t.a);
q=b.multiply(t.b);
d=p.gcd(q);
p=p.divide(d);
q=q.divide(d);return newfrac(p, q);
}
frac abs() {return newfrac(a.abs(), b.abs());
}intcompareTo(frac t) {
t= this.sub(t);returnt.a.compareTo(BigInteger.ZERO);
}booleanzero() {returna.equals(BigInteger.ZERO);
}
}classTask{
Scanner cin= newScanner(System.in);
PrintStream cout=System.out;
BigInteger ONE=BigInteger.ONE;
BigInteger ZERO=BigInteger.ZERO;
frac[][] a= new frac[211][211];
frac[] x= new frac[211];
frac t;
frac zero=newfrac(ZERO,ONE);
frac r,one=newfrac(ONE,ONE);boolean gauss(intn){inti,j,k,row;for(i=1;i<=n;i++){
row=i;for (j=i+1;j<=n;j++){if (a[row][i].abs().compareTo(a[j][i].abs())<0){
row=j;
}
}if (a[row][i].compareTo(zero)==0){return false;
}if (row!=i){for (k=i;k<=n;k++){
t=a[row][k];
a[row][k]=a[i][k];
a[i][k]=t;
}
t=x[row];
x[row]=x[i];
x[i]=t;
}for (j=i+1;j<=n;j++){
r=a[j][i].div(a[i][i]);
a[j][i]=zero;for (k=i+1;k<=n;k++){
a[j][k]=a[j][k].sub(r.mul(a[i][k]));
}
x[j]=x[j].sub(r.mul(x[i]));
}
}for (i=n;i>=1;i--){for (j=i-1;j>=1;j--){
r=a[j][i].div(a[i][i]);
a[j][i]=zero;
x[j]=x[j].sub(r.mul(x[i]));
}
}for (i=1;i<=n;i++){
x[i]=x[i].div(a[i][i]);
}return true;
}voidmain(){intn,i,j;while(cin.hasNext()){
n=cin.nextInt();for (i=1; i<= n; ++i){for (j=1; j<=n; ++j){
a[i][j]=newfrac(cin.nextBigInteger(),ONE);
}
x[i]=newfrac(cin.nextBigInteger(),ONE);
}if (!gauss(n)){
cout.println("No solution.");
}else{for (i=1;i<=n;i++){if (x[i].b.compareTo(ZERO)<0){
x[i].a=x[i].a.negate();
x[i].b=x[i].b.negate();
}
}for (i=1;i<=n;i++){
cout.print(x[i].a);if (x[i].b.compareTo(ONE)!=0){
cout.print("/"+x[i].b);
}
cout.println();
}
}
cout.println();
}
}
}