#include <iostream>
using namespace std;
class Base
{
public:
virtual void fun()
{
cout<<"Base";
}
};
class Der:public Base
{
Base &pb;
Der(Base& b) : pb(b) {}
public:
static Der Decorate(Base&& b){ return Der(b); }
virtual void fun()
{
cout<<"Der...";
pb.fun();
}
};
int main()
{
Der::Decorate(Der::Decorate(Base())).fun();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPiAKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBCYXNlCnsKcHVibGljOgogICAgdmlydHVhbCB2b2lkIGZ1bigpCiAgICB7CiAgICAgICAgY291dDw8IkJhc2UiOwogICAgfQp9OwoKY2xhc3MgRGVyOnB1YmxpYyBCYXNlCnsKICAgIEJhc2UgJnBiOwogICAgRGVyKEJhc2UmIGIpIDogcGIoYikge30KcHVibGljOgogICAgc3RhdGljIERlciBEZWNvcmF0ZShCYXNlJiYgYil7IHJldHVybiBEZXIoYik7IH0KICAgIHZpcnR1YWwgdm9pZCBmdW4oKQogICAgewogICAgICAgIGNvdXQ8PCJEZXIuLi4iOwogICAgICAgIHBiLmZ1bigpOwogICAgfQp9OwogICAgCmludCBtYWluKCkKewogICAgRGVyOjpEZWNvcmF0ZShEZXI6OkRlY29yYXRlKEJhc2UoKSkpLmZ1bigpOwogICAgcmV0dXJuIDA7Cn0=