public class Triangle implements Polygon
{
    double side1;
    double side2;
    double side3;
    public Triangle(double side1, double side2, double side3)
    {
        if(radicand(side1, side2, side3) < 0)
        {
            throw new IllegalArgumentException();
        }
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;
    }
    private static double radicand(double a, double b, double c)
    {
        double s = (a + b + c)/2.0;
        return s*(s - a)*(s - b)*(s - c);
    }
    public double area()
    {
        return Math.sqrt(radicand(side1, side2, side3));
    }
    public double diameter()
    {
        return Math.max(side1, Math.max(side2, side3));
    }
    public double perimeter()
    {
        return side1 + side2 + side3;
    }
    public int numSides()
    {
        return 3;
    }
    @Override
    public String toString()
    {
        return String.format("Triangle(%s, %s, %s)",
             side1, side2, side3);
    }
}