#include <cstdlib>
#include <cstdio>
class A
{
public:
virtual void f()
{
printf("A.f");
}
A(){f();}
};
class B: public A
{
public:
B(){throw -1;}
void f()
{
printf("B.f");
}
~B(){ f();}
};
class C: public A
{
B b;
void f(){ printf("C.f");}
~C(){f();}
};
int main()
{
try
{
A * a = new C();
delete a;
}
catch(...)
{
printf(" Exc ");
}
return 0;
}
I2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxjc3RkaW8+CgpjbGFzcyBBCnsKICAgIHB1YmxpYzoKCXZpcnR1YWwgdm9pZCBmKCkKCXsKCSAgICBwcmludGYoIkEuZiIpOwoJfQoJQSgpe2YoKTt9Cn07CgpjbGFzcyBCOiBwdWJsaWMgQQp7CiAgICBwdWJsaWM6CglCKCl7dGhyb3cgLTE7fQoJdm9pZCBmKCkKCXsKCSAgICBwcmludGYoIkIuZiIpOwoJfQogICAgICAgIH5CKCl7IGYoKTt9Cn07CgpjbGFzcyBDOiBwdWJsaWMgQQp7CiAgICAgQiBiOwogICAgIHZvaWQgZigpeyBwcmludGYoIkMuZiIpO30KICAgICB+Qygpe2YoKTt9Cn07CgppbnQgbWFpbigpCnsKICAgIHRyeQogICAgewogICAgICAgIEEgKiBhID0gbmV3IEMoKTsKICAgICAgICBkZWxldGUgYTsKICAgIH0KICAgIGNhdGNoKC4uLikKICAgIHsKICAgICAgICBwcmludGYoIiBFeGMgIik7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==