#include<iostream>
#include<vector>
#include<map>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<set>
#include<queue>
#include<unordered_map>
#include<cmath>
using namespace std;
class CShape
{
public:
virtual double area() = 0;
virtual void printInfo() = 0;
};
class CRectangle :public CShape
{
public:
int w, h;
virtual double area();
virtual void printInfo();
};
class CCircle :public CShape
{
public:
int r;
virtual double area();
virtual void printInfo();
};
class CTriangle :public CShape
{
public:
int a, b, c;
virtual double area();
virtual void printInfo();
};
double CRectangle::area()
{
return w*h;
}
void CRectangle::printInfo()
{
cout << "Rectangle:" << area() << endl;
}
double CCircle::area()
{
return 3.14*r*r;
}
void CCircle::printInfo()
{
cout << "CCircle:" << area() << endl;
}
double CTriangle::area()
{
double p = (a + b + c) / 2.0;
return sqrt(p * (p - a) * (p - b) * (p - c));
}
void CTriangle::printInfo()
{
cout << "Triangle:" << area() << endl;
}
bool mycompare(CShape* a, CShape* b)
{
return a->area() < b->area();
}
int main()
{
CShape* p[100];
int i; int n;
CRectangle* pr; CCircle* pc; CTriangle* pt;
cin >> n;
for (i = 0; i < n; i++)
{
char c;
cin >> c;
switch(c)
{
case 'R':
p[i] = new CRectangle;
cin >> pr->w >> pr->h;
p[i] = pr;
break;
case 'C':
pc = new CCircle;
cin >> pc->r;
p[i] = pc;
break;
case 'T':
pt = new CTriangle;
cin >> pt->a >> pt->b >> pt->c;
p[i] = pt;
break;
}
}
sort(p, p + n, mycompare);
for (i = 0; i < n; i++)
{
p[i]->printInfo();
}
return 0;
}