Problem: Create a program that outputs the surface area S of a square cone with a height of h, with a square with one side x as the base. However, assume that the line segment connecting the apex and the center of the base is orthogonal to the base. Also, x and h are positive integers less than or equal to 100.

Input

Given multiple datasets. Each dataset is given in the following format:


x
h


When both x and h are 0, it indicates the end of input.



Output

Output S (real number) on one line for each data set. The output may contain an error of 0.00001 or less.

Example

Input

6
4
7
9
0
0


Output

96.000000
184.192455

Solution (in JAVA):

Solution:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.util.StringTokenizer;

class Main{

  public static void main(String[] args){

    BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));
    String str="";
    StringTokenizer stk;
    int tei,takasa;

    try{

    	while(true) {
    		str=bfr.readLine();
    	      if(str=="") {
    	        System.exit(0);
    	      }
    	      tei=Integer.parseInt(str);

    	      str=bfr.readLine();
    	      if(str=="") {
    	        System.exit(0);
    	      }
    	      takasa=Integer.parseInt(str);

    	      if(tei==0 && takasa==0) {
    	    	  System.exit(0);
    	      }
    	      else {
    	    	  System.out.println(BigDecimal.valueOf(((double) tei)*((double) tei)+((double)tei)*Math.sqrt(((double)tei*tei/4)+((double)takasa*takasa))*2).toPlainString());
    	      }
    	}

    } catch (IOException e) {
      System.exit(0);
    }
    catch(NumberFormatException e) {
      System.exit(0);
    }

    catch(NullPointerException e) {
      System.exit(0);
    }
  }
}