import java.util.Scanner;


public class A1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner scanLines = new Scanner(System.in);

		boolean doneScanning = false;
		double smallestPermimeter =0;
		double smallestArea =0;	
		double largestPerimeter =0;
		double largestArea =0;
		double currentPerimeter =0;
		double currentArea =0;
		boolean firstTime = true;
		
		while (!doneScanning) {

			
			
			String line = scanLines.nextLine();
			Scanner scanLine = new Scanner(line).useDelimiter(" ");
			String typeOfObject = scanLine.next();
			
			if (typeOfObject.equals("rectangle")) {
				int x1 = scanLine.nextInt();
				int y1 = scanLine.nextInt();
				int x2 = scanLine.nextInt();
				int y2 = scanLine.nextInt();
				
				 currentPerimeter=rectangle_perimeter( x1,  y1,  x2,  y2);
				 currentArea=rectangle_area( x1,  y1,  x2,  y2);
				
			} else if (typeOfObject.equals("triangle")) {
				int x1 = scanLine.nextInt();
				int y1 = scanLine.nextInt();
				int x2 = scanLine.nextInt();
				int y2 = scanLine.nextInt();
				int x3 = scanLine.nextInt();
				int y3 = scanLine.nextInt();
				 currentPerimeter=triangle_perimeter( x1,  y1,  x2,  y2,  x3,  y3);
				 currentArea=triangle_area( x1,  y1,  x2,  y2,  x3,  y3);
				
			} else if (typeOfObject.equals("circle")) {

				int x1 = scanLine.nextInt();
				int y1 = scanLine.nextInt();
				double radius = scanLine.nextDouble();
				 currentPerimeter=circle_perimeter(radius);
				 currentArea=circle_area(radius);
				
			} else if (typeOfObject.equals("end")){
				doneScanning=true;
				System.out.println("The smallest perimeter is "+smallestPermimeter);
				System.out.println("The smallest area is " +smallestArea);
				System.out.println("The largest perimeter is "+largestPerimeter);
				System.out.println("The largest area is "+largestArea);
			}
			
			
			if(firstTime){
				smallestPermimeter=currentPerimeter;
				smallestArea=currentArea;
				largestPerimeter=currentPerimeter;
				largestArea=currentArea;
				firstTime=false;
			}
			
			
			if(currentPerimeter<smallestPermimeter){
				smallestPermimeter=currentPerimeter;
			}else if(currentPerimeter>largestPerimeter){
				largestPerimeter=currentPerimeter;
			}
			if(currentArea<smallestArea){
				smallestArea=currentArea;
			}else if(currentArea>largestArea){
				largestArea=currentArea;
			}

		}

	}
	
	
	static double triangle_area(int x1, int y1, int x2, int y2, int x3, int y3) {

	      return(Math.abs((x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2))/2));
	}	
	
	static double triangle_perimeter(int x1, int y1, int x2, int y2, int x3, int y3) {
		double side1= Math.sqrt(Math.pow((x2-x1), 2)+Math.pow((y2-y1), 2));
		double side2= Math.sqrt(Math.pow((x2-x3), 2)+Math.pow((y2-y3), 2));
		double side3= Math.sqrt(Math.pow((x1-x3), 2)+Math.pow((y1-y3), 2));
		return side1+side2+side3;
	}	
		
	static double circle_area(double radius) {

		return (Math.PI*Math.pow(radius,2));
	}	
	static double circle_perimeter(double radius) {
		return (Math.PI*2*radius);
	      
	}	
	static double rectangle_area(int x1, int y1, int x2, int y2) {

	      return (Math.abs(x2-x1)*Math.abs(y2-y1));
	}	
	static double rectangle_perimeter(int x1, int y1, int x2, int y2) {

		return (2*Math.abs(x2-x1)+2*Math.abs(y2-y1));
	}	
	

}
