#include <iostream>
using namespace std;
class B{
public: virtual B * fv(){return this;}
int adun(int p){cout<<"B";return p+1;}
};
class D:public B{
public: virtual D * fv(){return this;}
int adun (int p){cout<<"D";return p+2;}
};
int main(){
B *p =new D;
int x=p->fv()->adun(1);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQnsKcHVibGljOiB2aXJ0dWFsIEIgKiBmdigpe3JldHVybiB0aGlzO30KICAgICAgICBpbnQgYWR1bihpbnQgcCl7Y291dDw8IkIiO3JldHVybiBwKzE7fQp9OwpjbGFzcyBEOnB1YmxpYyBCewpwdWJsaWM6IHZpcnR1YWwgRCAqIGZ2KCl7cmV0dXJuIHRoaXM7fQogICAgICAgIGludCBhZHVuIChpbnQgcCl7Y291dDw8IkQiO3JldHVybiBwKzI7fQp9OwppbnQgbWFpbigpewpCICpwID1uZXcgRDsKaW50IHg9cC0+ZnYoKS0+YWR1bigxKTsKcmV0dXJuIDA7Cn0=