import java.util.Scanner;

// SolveSystem is a program that solves a 4x4 system of linear equations
class SolveSystem{

  public static void main(String[] args){
    //declarations
    Scanner scanner = new Scanner(System.in);
    double
      a11,a12,a13,a14,
      a21,a22,a23,a24,
      a31,a32,a33,a34,
      a41,a42,a43,a44;
    double b1,b2,b3,b4;
    double d,d1,d2,d3,d4;
    
    //printing info
    System.out.println("This program solves the system");
    System.out.println("     [a11 a12 a13 a14] [x1]   [b1]");
    System.out.println("     [a21 a22 a23 a24]*[x2] = [b2]");
    System.out.println("     [a31 a32 a33 a34] [x3]   [b3]");
    System.out.println("     [a41 a42 a43 a44] [x4]   [b4]");
    System.out.println("given all a's and b's.");
    
    //reading data
    System.out.println("please insert a11: "); a11 = scanner.nextDouble();
    System.out.println("please insert a12: "); a12 = scanner.nextDouble();
    System.out.println("please insert a13: "); a13 = scanner.nextDouble();
    System.out.println("please insert a14: "); a14 = scanner.nextDouble();
    System.out.println("please insert a21: "); a21 = scanner.nextDouble();
    System.out.println("please insert a22: "); a22 = scanner.nextDouble();
    System.out.println("please insert a23: "); a23 = scanner.nextDouble();
    System.out.println("please insert a24: "); a24 = scanner.nextDouble();
    System.out.println("please insert a31: "); a31 = scanner.nextDouble();
    System.out.println("please insert a32: "); a32 = scanner.nextDouble();
    System.out.println("please insert a33: "); a33 = scanner.nextDouble();
    System.out.println("please insert a34: "); a34 = scanner.nextDouble();
    System.out.println("please insert a41: "); a41 = scanner.nextDouble();
    System.out.println("please insert a42: "); a42 = scanner.nextDouble();
    System.out.println("please insert a43: "); a43 = scanner.nextDouble();
    System.out.println("please insert a44: "); a44 = scanner.nextDouble();

    System.out.println("please insert b1:  "); b1  = scanner.nextDouble();
    System.out.println("please insert b2:  "); b2  = scanner.nextDouble();
    System.out.println("please insert b3:  "); b3  = scanner.nextDouble();
    System.out.println("please insert b4:  "); b4  = scanner.nextDouble();

    //computing determinants
    d = a11*(a22*(a33*a44 - a34*a43) - a23*(a32*a44 - a34*a42) + a24*(a32*a43 - a33*a42))
      - a12*(a21*(a33*a44 - a34*a43) - a23*(a31*a44 - a34*a41) + a24*(a31*a43 - a33*a41))
      + a13*(a21*(a32*a44 - a34*a42) - a22*(a31*a44 - a34*a41) + a24*(a31*a42 - a32*a41))
      - a14*(a21*(a32*a43 - a33*a42) - a22*(a31*a43 - a33*a41) + a23*(a31*a42 - a32*a41));
    
    d1= b1 *(a22*(a33*a44 - a34*a43) - a23*(a32*a44 - a34*a42) + a24*(a32*a43 - a33*a42))
      - a12*(b2 *(a33*a44 - a34*a43) - a23*(b3 *a44 - a34*b4 ) + a24*(b3 *a43 - a33*b4 ))
      + a13*(b2 *(a32*a44 - a34*a42) - a22*(b3 *a44 - a34*b4 ) + a24*(b3 *a42 - a32*b4 ))
      - a14*(b2 *(a32*a43 - a33*a42) - a22*(b3 *a43 - a33*b4 ) + a23*(b3 *a42 - a32*b4 ));
    
    d2= a11*(b2 *(a33*a44 - a34*a43) - a23*(b3 *a44 - a34*b4 ) + a24*(b3 *a43 - a33*b4 ))
      - b1 *(a21*(a33*a44 - a34*a43) - a23*(a31*a44 - a34*a41) + a24*(a31*a43 - a33*a41))
      + a13*(a21*(b3 *a44 - a34*b4 ) - b2 *(a31*a44 - a34*a41) + a24*(a31*b4  - b3 *a41))
      - a14*(a21*(b3 *a43 - a33*b4 ) - b2 *(a31*a43 - a33*a41) + a23*(a31*b4  - b3 *a41));
    
    d3= a11*(a22*(b3 *a44 - a34*b4 ) - b2 *(a32*a44 - a34*a42) + a24*(a32*b4  - b3 *a42))
      - a12*(a21*(b3 *a44 - a34*b4 ) - b2 *(a31*a44 - a34*a41) + a24*(a31*b4  - b3 *a41))
      + b1 *(a21*(a32*a44 - a34*a42) - a22*(a31*a44 - a34*a41) + a24*(a31*a42 - a32*a41))
      - a14*(a21*(a32*b4  - b3 *a42) - a22*(a31*b4  - b3 *a41) + b2 *(a31*a42 - a32*a41));
    
    d4= a11*(a22*(a33*b4  - b3 *a43) - a23*(a32*b4  - b3 *a42) + b2 *(a32*a43 - a33*a42))
      - a12*(a21*(a33*b4  - b3 *a43) - a23*(a31*b4  - b3 *a41) + b2 *(a31*a43 - a33*a41))
      + a13*(a21*(a32*b4  - b3 *a42) - a22*(a31*b4  - b3 *a41) + b2 *(a31*a42 - a32*a41))
      - b1 *(a21*(a32*a43 - a33*a42) - a22*(a31*a43 - a33*a41) + a23*(a31*a42 - a32*a41));
    
    
    //outputting results
    System.out.println("determinant of A: "+d);
    System.out.println("x1:               "+d1/d);
    System.out.println("x2:               "+d2/d);
    System.out.println("x3:               "+d3/d);
    System.out.println("x4:               "+d4/d);
  }

}

