class Matrica2x2{
       double[][] matrica;
 public Matrica2x2(){
       matrica = new double[2][2];
 	matrica[0][0] = 1.0;
 	matrica[0][1] = 0.0;
 	matrica[1][0] = 0.0;
 	matrica[1][1] = 1.0;
 }

 public Matrica2x2(double x, double y, double z,double q){
       matrica = new double[2][2];
 	matrica[0][0] = x;
 	matrica[0][1] = y;
 	matrica[1][0] = z;
 	matrica[1][1] = q;
 } 

 public void dauginkIsSkaiciaus(double a){
          matrica[0][0] *= a;
          matrica[0][1] *= a;
    	    matrica[1][0] *= a;
          matrica[1][1] *= a;
    return;
 }

 public void pridekMatrica(Matrica2x2 kita){
    matrica[0][0] += kita.matrica[0][0];
    matrica[0][1] += kita.matrica[0][1];
    matrica[1][0] += kita.matrica[1][0];
    matrica[1][1] += kita.matrica[1][1];
    return;
 } 

 public double determinantas(){
    return(matrica[0][0]*matrica[1][1]-matrica[0][1]*matrica[1][0]);
 } 
 
 public boolean arIssigimus(){
 double det = matrica[0][0]*matrica[1][1]-matrica[0][1]*matrica[1][0];
 if (det ==0) {
 return true;
 }
 return false;
 }
 
 public boolean arYraAtvirkstine(){
 double det = matrica[0][0]*matrica[1][1]-matrica[0][1]*matrica[1][0];
 if (det ==0) {
 return false;
 }
 return true;
 }
 
 public void transponuok(){
 	double x = matrica[0][0];
 	double y = matrica[0][1];
 	double z = matrica[1][0];
 	double q = matrica[1][1];
 	matrica[0][0] = x;
 	matrica[0][1] = z;
 	matrica[1][0] = y; 
 	matrica[0][0] = q;
 	return;
 }

public static Matrica2x2 dauginkMatricas(Matrica2x2 m1, Matrica2x2 m2) {
 	Matrica2x2 sudauginta = new Matrica2x2();
 	sudauginta.matrica[0][0] = m1.matrica[0][0]*m2.matrica[0][0]+m1.matrica[0][1]*m2.matrica[1][0];
 	sudauginta.matrica[0][1] = m1.matrica[0][0]*m2.matrica[0][1]+m1.matrica[0][1]*m2.matrica[1][1];
 	sudauginta.matrica[1][0] = m1.matrica[1][0]*m2.matrica[0][0]+m1.matrica[1][1]*m2.matrica[1][0];
 	sudauginta.matrica[1][1] = m1.matrica[1][0]*m2.matrica[0][1]+m1.matrica[1][1]*m2.matrica[1][1];
	return sudauginta;   
 }


 public static void atvirkstine(Matrica2x2 m1) {
 	double det = m1.matrica[0][0]*m1.matrica[1][1]-m1.matrica[0][1]*m1.matrica[1][0];
 	if (det==0)System.out.println("matrica neturi atvirkstines");
 	else
 	{
 	Matrica2x2 atvirkstine = new Matrica2x2();
 	atvirkstine.matrica[0][0] = 1/det*m1.matrica[1][1];
 	atvirkstine.matrica[0][1] = -1/det*m1.matrica[0][1];
 	atvirkstine.matrica[1][0] = -1/det*m1.matrica[1][0];
 	atvirkstine.matrica[1][1] = 1/det*m1.matrica[0][0];
 	System.out.println(atvirkstine);
 	}   
 }

 public void spausdinkInfo(){
 System.out.println(""+matrica[0][0]+" "+matrica[0][1]+"\n"+matrica[1][0]+" "+matrica[1][1]+"\n");
 return;
 }

 public static void main (String[] args){
 	Matrica2x2 m1 = new Matrica2x2(1.0,1.0,1.0,1.0);
 	Matrica2x2 m2 = new Matrica2x2(2.0,2.0,1.0,8.0);
 	Matrica2x2 m3 = new Matrica2x2(2.0,2.0,1.0,8.0);
       Matrica2x2 m5 = new Matrica2x2(3.0,2.0,1.0,2.0);
       Matrica2x2 m6 = new Matrica2x2(2.0,3.0,3.0,2.0);
Matrica2x2 m10 = new Matrica2x2(2.0,3.0,3.0,2.0);
 System.out.println("");   
 System.out.println("Duotoji matrica ");
 m1.spausdinkInfo();
 System.out.println("Matricos atvirkstine ");
 m10.atvirkstine(m1);

 System.out.println("Determinantas = "+m1.determinantas());
 System.out.println("");

  m1.dauginkIsSkaiciaus(3);
 System.out.println("Matricos daugyba is 3 ");
 System.out.println(""+m1.matrica[0][0] +" " +m1.matrica[0][1]);
 System.out.println(""+m1.matrica[1][0] +" " +m1.matrica[1][1]);
 System.out.println("");
 
 Matrica2x2 m9 = Matrica2x2.dauginkMatricas(m1,m2);
 System.out.println("Dvieju matricu daugyba ");
 System.out.println("" +m9.matrica[0][0] +" " +m9.matrica[0][1]);
 System.out.println("" +m9.matrica[1][0] +" " +m9.matrica[1][1]);
 System.out.println("");

 m5.pridekMatrica(m6);
 System.out.println("Matricu sudetis ");
 System.out.println("" +m5.matrica[0][0] +" " +m5.matrica[0][1]);
 System.out.println("" +m5.matrica[1][0] +" " +m5.matrica[1][1]);
 System.out.println("");

   }
}



