#include <iostream>
using namespace std;

class C{
	int* cp;
	public:
	
	C(){ cp = new int;} 
	
	virtual ~C(){
		delete cp;
		cout << "~C()" << endl;
	}
	
	virtual void someMethod()=0;
};

class B: public C{
	int* bp;
	public:
	
	B(){ bp = new int;} 
	
	virtual ~B(){
		delete bp;
		cout << "~B()" << endl;
	}
	
	virtual void someMethod(){//some Implementation
	}
};

class A: public B{
	public:
	virtual ~A(){
		cout << "~A()" << endl;
	}
};



int main(){
  C *c = new A;
  delete c;
  return 0;
}