#include <iostream>
#include <memory>
using namespace std;
struct A {
weak_ptr<A> Next;
~A(){ cout << "deleted" << endl; }
};
void Foo()
{
auto a1 = make_shared<A>();
auto a2 = make_shared<A>();
a1->Next = a2;
a2->Next = a1;
}
int main() {
Foo();
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEEgewoJd2Vha19wdHI8QT4gTmV4dDsKCX5BKCl7IGNvdXQgPDwgImRlbGV0ZWQiIDw8IGVuZGw7IH0KfTsKCnZvaWQgRm9vKCkgCnsKICBhdXRvIGExID0gbWFrZV9zaGFyZWQ8QT4oKTsKICBhdXRvIGEyID0gbWFrZV9zaGFyZWQ8QT4oKTsKICBhMS0+TmV4dCA9IGEyOwogIGEyLT5OZXh0ID0gYTE7Cn0KCmludCBtYWluKCkgewoJRm9vKCk7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglyZXR1cm4gMDsKfQ==