import java.io.*;
import java.text.DecimalFormat;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] arr = br.readLine().split(" ");
        double l = Integer.parseInt(arr[0]);
        double w = Integer.parseInt(arr[1]);
        double ra = Integer.parseInt(br.readLine());
        double ri = Integer.parseInt(br.readLine());
        
        // 创建对象,求出面积。
        double ar1, ar2, ar3;
        Shape sh1 = new Rectangle(l, w);
        Shape sh2 = new Circle(ra);
        Shape sh3 = new Square(ri);
        ar1 = sh1.getArea();
        ar2 = sh2.getArea();
        ar3 = sh3.getArea();
        
        // 处理第二个图形面积的返回值,否则通不过测试
        int area2 = (int)ar2;
        String s;
        double temp;
        DecimalFormat df = new DecimalFormat("###.0");
        if (ar2 > area2) {
            temp = Double.parseDouble(df.format(ar2));
            if (temp != ar2) {
                s = String.format("%.2f", ar2);
            } else {
                s = Double.toString(ar2);
            }
        } else {
            s = Integer.toString(area2);
        }
        System.out.printf("%.0f\n%s\n%.0f", ar1, s, ar3);
    }
    
    abstract static class Shape {
        // 私有数据x,y
        private double x;
        private double y;
        
        // 抽象方法:使派生类Rectangle和类Circle都必须重写方法getArea()
        abstract double getArea();
    }
    
    private static class Rectangle extends Shape {
        // Rectangle类自有属性:长和宽
        private double length;
        private double weight;
        
        // 有参构造,正方形Square类继承时用来赋值属性
        private Rectangle(double ride) {
            this.length = ride;
            this.weight = ride;
        }
        
        // 有参构造
        private Rectangle(double length, double weight) {
            this.length = length;
            this.weight = weight;
        }
        
        // getArea方法重写
        @Override
        public double getArea() {
            return length * weight;
        }
    }
    
    private static class Circle extends Shape {
        // Circle类自有属性:长和宽
        private double radius;
        
        // 有参构造
        private Circle(double radius) {
            this.radius = radius;
        }
        
        // getArea方法重写
        @Override
        public double getArea() {
            return 3.14 * radius * radius;
        }
    }
    
    private static class Square extends Rectangle {
        // 有参构造
        private Square(double ride) {
            // 参数送到父类,用父类一个参数的构造器创建对象
            super(ride);
        }
    }
}