#include <iostream>
class Base {
virtual int do_f() { return 1; }
public:
int f() { return this->do_f(); }
};
class Derived: Base {
int do_f() { return 2; }
public:
int g() { return this->f(); }
};
class Final: public Derived {
int do_f() { return 3; }
};
int main() {
Final final;
std::cout << final.g() << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpjbGFzcyBCYXNlIHsKICAgIHZpcnR1YWwgaW50IGRvX2YoKSB7IHJldHVybiAxOyB9CnB1YmxpYzoKICAgIGludCBmKCkgeyByZXR1cm4gdGhpcy0+ZG9fZigpOyB9Cn07CmNsYXNzIERlcml2ZWQ6IEJhc2UgewogICAgaW50IGRvX2YoKSB7IHJldHVybiAyOyB9CnB1YmxpYzoKICAgIGludCBnKCkgeyByZXR1cm4gdGhpcy0+ZigpOyB9Cn07CmNsYXNzIEZpbmFsOiBwdWJsaWMgRGVyaXZlZCB7CiAgICBpbnQgZG9fZigpIHsgcmV0dXJuIDM7IH0KfTsKCmludCBtYWluKCkgewogICAgRmluYWwgZmluYWw7CiAgICBzdGQ6OmNvdXQgPDwgZmluYWwuZygpIDw8ICdcbic7Cn0K