#include <iostream>
#include <vector>
using namespace std;

class Figure {
	public:
		virtual void print() const = 0;
};

class Circle : public Figure {
	public:
		void print() const override {
			cout << "Circle" << endl;
		}
};

class Triangle : public Figure {
	public:
		void print() const override {
			cout << "Triangle" << endl;
		}
};

void log(const Figure &figure) {
	figure.print();
}

int main() {
	vector<Figure*> figures;
	figures.push_back(new Circle());
	figures.push_back(new Triangle());
	
	for(auto &figure : figures) {
		figure->print();
	}
	
	for(auto &figure : figures) {
		delete figure;
	}
	
	return 0;
}