#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;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQ3sKCWludCogY3A7CglwdWJsaWM6CgkKCUMoKXsgY3AgPSBuZXcgaW50O30gCgkKCXZpcnR1YWwgfkMoKXsKCQlkZWxldGUgY3A7CgkJY291dCA8PCAifkMoKSIgPDwgZW5kbDsKCX0KCQoJdmlydHVhbCB2b2lkIHNvbWVNZXRob2QoKT0wOwp9OwoKY2xhc3MgQjogcHVibGljIEN7CglpbnQqIGJwOwoJcHVibGljOgoJCglCKCl7IGJwID0gbmV3IGludDt9IAoJCgl2aXJ0dWFsIH5CKCl7CgkJZGVsZXRlIGJwOwoJCWNvdXQgPDwgIn5CKCkiIDw8IGVuZGw7Cgl9CgkKCXZpcnR1YWwgdm9pZCBzb21lTWV0aG9kKCl7Ly9zb21lIEltcGxlbWVudGF0aW9uCgl9Cn07CgpjbGFzcyBBOiBwdWJsaWMgQnsKCXB1YmxpYzoKCXZpcnR1YWwgfkEoKXsKCQljb3V0IDw8ICJ+QSgpIiA8PCBlbmRsOwoJfQp9OwoKCgppbnQgbWFpbigpewogIEMgKmMgPSBuZXcgQTsKICBkZWxldGUgYzsKICByZXR1cm4gMDsKfQ==