#include <iostream>
class B
{
public:
virtual void f() { std::cout<<"Fi"; }
virtual void f(int) { std::cout<<"GI"; }
};
class A : protected B
{
public:
void f(double) { std::cout<<"HI"; }
void f() { B::f(); }
};
int main ()
{
A a;
a.f();
a.f(10);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQgp7CnB1YmxpYzoKICAgIHZpcnR1YWwgdm9pZCBmKCkgeyBzdGQ6OmNvdXQ8PCJGaSI7IH0KICAgIHZpcnR1YWwgdm9pZCBmKGludCkgeyBzdGQ6OmNvdXQ8PCJHSSI7IH0KCn07CgpjbGFzcyBBIDogcHJvdGVjdGVkIEIKewpwdWJsaWM6CiAgICB2b2lkIGYoZG91YmxlKSB7IHN0ZDo6Y291dDw8IkhJIjsgfQogICAgdm9pZCBmKCkgeyBCOjpmKCk7IH0KfTsKCmludCBtYWluICgpCnsKCUEgYTsKCWEuZigpOwoJYS5mKDEwKTsKCiAgcmV0dXJuIDA7Cn0=