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

class Base {
	protected:
	~Base() {
		cout << "B\n";
	}
};

class Derived : public Base {
	public:
	virtual ~Derived(){
		cout << "D\n";
	}
};


int main() {
	
	std::shared_ptr<Base> myBaseS(new Derived());
	//std::unique_ptr<Base> myBaseU(new Derived());
	
//	Base *myBase_raw = new Derived();
//	delete myBase_raw;
	
	return 0;
}