#include <iostream>

class base{
public:
	virtual int first(int a) = 0;
	int final_result(int a) {
		return 3*first(a);
	}
//	virtual int multiply(int a, int b, int c) = 0;
	
};

class derived : public base {
public:
	int first(int a) {
		return 2*a;
	}
};

class another_derived : public base {
public:
	int first(int a, int b) {
		return a + b;
	}

};

int main() {

	derived d;
	std::cout << d.final_result(1) << "\n";
	another_derived d2; // doesn't work
	return 0;
}