#include <iostream>
#include <memory>
struct champ { virtual std::string whoami() = 0; };
struct karma : champ { std::string whoami() override { return "karma"; } };
int main() {
champ* a = new karma;
std::unique_ptr<champ> b(new karma);
std::cout << a->whoami() << ", " << b->whoami() << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKc3RydWN0IGNoYW1wIHsgdmlydHVhbCBzdGQ6OnN0cmluZyB3aG9hbWkoKSA9IDA7IH07CnN0cnVjdCBrYXJtYSA6IGNoYW1wIHsgc3RkOjpzdHJpbmcgd2hvYW1pKCkgb3ZlcnJpZGUgeyByZXR1cm4gImthcm1hIjsgfSB9OwoKaW50IG1haW4oKSB7CgljaGFtcCogYSA9IG5ldyBrYXJtYTsKCXN0ZDo6dW5pcXVlX3B0cjxjaGFtcD4gYihuZXcga2FybWEpOwoJc3RkOjpjb3V0IDw8IGEtPndob2FtaSgpIDw8ICIsICIgPDwgYi0+d2hvYW1pKCkgPDwgIlxuIjsKfQ==