#include <memory>
#include <iostream>
#include <string>
using namespace std;
struct Node {
shared_ptr<Node> next; string value;
~Node() { cout << "destroyed object with value " << value << endl; }};int main(){ shared_ptr<Node> a = make_shared<Node>(); shared_ptr<Node> b = make_shared<Node>(); shared_ptr<Node> c = make_shared<Node>(); a->value = "a"; b->value = "b"; c->value = "c"; a->next = b; b->next = c; c->next = a; cout << "Done!\n";}
I2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IE5vZGUgewogIHNoYXJlZF9wdHI8Tm9kZT4gbmV4dDsgIHN0cmluZyB2YWx1ZTsKICB+Tm9kZSgpIHsgY291dCA8PCAiZGVzdHJveWVkIG9iamVjdCB3aXRoIHZhbHVlICIgPDwgdmFsdWUgPDwgZW5kbDsgfX07aW50IG1haW4oKXsgIHNoYXJlZF9wdHI8Tm9kZT4gYSA9IG1ha2Vfc2hhcmVkPE5vZGU+KCk7ICBzaGFyZWRfcHRyPE5vZGU+IGIgPSBtYWtlX3NoYXJlZDxOb2RlPigpOyAgc2hhcmVkX3B0cjxOb2RlPiBjID0gbWFrZV9zaGFyZWQ8Tm9kZT4oKTsgIGEtPnZhbHVlID0gImEiOyAgYi0+dmFsdWUgPSAiYiI7ICBjLT52YWx1ZSA9ICJjIjsgIGEtPm5leHQgPSBiOyAgIGItPm5leHQgPSBjOyAgIGMtPm5leHQgPSBhOyAgIGNvdXQgPDwgIkRvbmUhXG4iO30=