#include <iostream>
using namespace std;
template<class T = int>
struct A {
using Int = T;
virtual void pr() {
cout << "A fire\n";
}
};
template<class T>
struct B : public A<T> {
virtual void pr() override {
Int a;
cout << "B fire\n";
}
};
int main() {
A<>* b = new B<int>();
A<>* c = b;
delete b;
c->pr();
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8Y2xhc3MgVCA9IGludD4Kc3RydWN0IEEgewoJdXNpbmcgSW50ID0gVDsKCXZpcnR1YWwgdm9pZCBwcigpIHsKCQljb3V0IDw8ICJBIGZpcmVcbiI7Cgl9Cn07CnRlbXBsYXRlPGNsYXNzIFQ+CnN0cnVjdCBCIDogcHVibGljIEE8VD4gewoJdmlydHVhbCB2b2lkIHByKCkgb3ZlcnJpZGUgewoJCUludCBhOwoJCWNvdXQgPDwgIkIgZmlyZVxuIjsKCX0KfTsKCmludCBtYWluKCkgewoJQTw+KiBiID0gbmV3IEI8aW50PigpOwoJQTw+KiBjID0gYjsKCWRlbGV0ZSBiOwoJYy0+cHIoKTsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXJldHVybiAwOwp9