// Autor: Boris Mesetovic
// Matrikelnummer: 0225445
// Runde 1, Beispiel 1104
// Klasse: leicht
// Anmerkung: villeicht gibt es ja gramatikalische Fehler in Kommentaren,
// aber das Programm soll ferhlerlos funktionieren :) 

import eprog.*;

class dreieck extends EprogIO {     
     public static void main(String args[]) {
       
     try {  

      double a, b, c, A;

      a = readDouble();
      b = readDouble();
      c = readDouble();

      //wenn a=0, dann berechne a und drucke es mit dem flächeninhalt aus
      if (a==0 & b!=0 & c!=0) {
	  a = java.lang.Math.sqrt(c*c - b*b);
          println(a + " " + (a*b)/2); 
      }
      //wenn b=0, berechne b und drucke es mit dem flächeninhalt aus
      else if (a!=0 & b==0 & c!=0) {
	  b = java.lang.Math.sqrt(c*c - a*a);
          println(b + " " + (a*b)/2); 
      }
      //wenn c=0, berechne c und drucke es mit dem flächeninhalt aus
      else if (a!=0 & b!=0 & c==0) {
	  c = java.lang.Math.sqrt(b*b + a*a);
          println(c + " " + (a*b)/2);
      }
   
      //wenn alle drei seiten gegeben sind, überprüfe ob es um ein rechwinkeles dreieck handelt
      else if (a!=0 & b!=0 & c!=0) {
	   //wenn ja, berechne und drucke die fläche aus
   	   if (java.lang.Math.sqrt(c*c) == java.lang.Math.sqrt(a*a + b*b)) { 
                  A = (a*b)/2;
                  println(A + "\n");
           }
           //wenn nein, sag so...
           else 
               println("KEIN RECHTER WINKEL \n");
      }
      
      // entweder zwei oder drei seiten sind 0, was nicht erlaubt ist     
      else {
	    println("FALSCHE EINGABE \n");
      }        

    }
    
    catch (EprogException e){
       //fehler. ein falscher datentyp oder so was...
       println("? \n");
    }
    }
}