#include <iostream>
using namespace std;
struct A1 { ~A1() { std::cout << "~A1\n"; } };
struct A2 : A1 { virtual ~A2() { std::cout << "~A2\n"; } };
struct A3 : A2 { ~A3() { std::cout << "~A3\n"; } };
struct A4 : A3 { ~A4() { std::cout << "~A4\n"; } };
int main() {
// your code goes here
A3* a = new A4();
delete a;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEExIHsgfkExKCkgeyBzdGQ6OmNvdXQgPDwgIn5BMVxuIjsgfSB9OwpzdHJ1Y3QgQTIgOiBBMSB7IHZpcnR1YWwgfkEyKCkgeyBzdGQ6OmNvdXQgPDwgIn5BMlxuIjsgfSB9OwpzdHJ1Y3QgQTMgOiBBMiB7IH5BMygpIHsgc3RkOjpjb3V0IDw8ICJ+QTNcbiI7IH0gfTsKc3RydWN0IEE0IDogQTMgeyB+QTQoKSB7IHN0ZDo6Y291dCA8PCAifkE0XG4iOyB9IH07CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCUEzKiBhID0gbmV3IEE0KCk7CglkZWxldGUgYTsKCXJldHVybiAwOwp9Cg==