struct B;
struct A {
B* b;
};
struct B {
A* a;
B() : a(new A{this}) {}
~B() { delete a; }
};
int main() {
B* b = new B;
// A* a = b->a;
const A* a = b->a;
delete a->b;
}
c3RydWN0IEI7CnN0cnVjdCBBIHsKICBCKiBiOwp9OwoKc3RydWN0IEIgewogIEEqIGE7CiAgQigpIDogYShuZXcgQXt0aGlzfSkge30KICB+QigpIHsgZGVsZXRlIGE7IH0KfTsKCmludCBtYWluKCkgewogIEIqIGIgPSBuZXcgQjsKICAvLyBBKiBhID0gYi0+YTsKICBjb25zdCBBKiBhID0gYi0+YTsKICBkZWxldGUgYS0+YjsKfQ==