#include <memory>
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <iomanip>
#include <cmath>

using namespace std;

class Figure {
 public:
  virtual string Name() = 0;
  virtual double Perimeter() = 0;
  virtual double Area() = 0;
};

class Triangle : public Figure {
 public:
  Triangle(const int& one, const int& two, const int& three) {
    a = one;
    b = two;
    c = three;
  }
  string Name() {
    return "TRIANGLE";
  }
  double Perimeter() {
    return a + b + c;
  }
  double Area() {
    double p = (a + b + c) / 2.0;
    return sqrt(p * (p - a) * (p - b) * (p - c));
  }
 private:
  int a, b, c;
};

class Rect : public Figure {
 public:
  Rect(const int& one, const int& two) {
    a = one;
    b = two;
  }
  string Name() {
    return "RECT";
  }
  double Perimeter() {
    return 2.0 * (a + b);
  }
  double Area() {
    return a * b;
  }
 private:
  int a, b;
};

class Circle : public Figure {
 public:
  Circle(const int& one) {
    a = one;
  }
  string Name() {
    return "CIRCLE";
  }
  double Perimeter() {
    return 2 * 3.14 * a;
  }
  double Area() {
    return 3.14 * a * a;
  }
 private:
  int a;
};

shared_ptr<Figure> CreateFigure(istringstream& is) {
  string fig;
  is >> fig;
  if (fig == "RECT") {
    int a, b;
    is >> a >> ws >> b;
    return make_shared<Rect>(a, b);
  }
  else if (fig == "TRIANGLE") {
    int a, b, c;
    is >> a >> ws >> b >> ws >> c;
    return make_shared<Triangle>(a, b, c);
  }
  else if (fig == "CIRCLE") {
    int a;
    is >> a;
    return make_shared<Circle>(a);
  }
}

int main() {
  vector<shared_ptr<Figure>> figures;
  for (string line; getline(cin, line); ) {
    istringstream is(line);
    string command;
    is >> command;
    if (command == "ADD") {
      is >> ws;
      figures.push_back(CreateFigure(is));
	} else if (command == "PRINT") {
      for (const auto& current_figure : figures) {
        cout << fixed << setprecision(3)
             << current_figure->Name() << " "
             << current_figure->Perimeter() << " "
             << current_figure->Area() << endl;
      }
    }
  }
  return 0;
}