#include <iostream>
using namespace std;
class Base
{
public:
Base() {}
};
// Forward declaration
class Derived1;
class Derived2 : public Base
{
friend class Derived1;
public:
Derived2() : Base() {}
private:
Derived1 *ptr;
};
class Derived1 : public Base
{
public:
Derived1(Derived2& obj) : Base(), ptr(&obj) {
obj.ptr = this;
}
private:
Derived2 *ptr;
};
int main() {
Derived2 obj2;
Derived1 obj1(obj2);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQmFzZQp7CnB1YmxpYzoKICAgIEJhc2UoKSB7fSAgICAgIAp9OwoKLy8gRm9yd2FyZCBkZWNsYXJhdGlvbgpjbGFzcyBEZXJpdmVkMTsKCmNsYXNzIERlcml2ZWQyIDogcHVibGljIEJhc2UKewoJZnJpZW5kIGNsYXNzIERlcml2ZWQxOwoJCnB1YmxpYzoKICAgIERlcml2ZWQyKCkgOiBCYXNlKCkge30KcHJpdmF0ZTogICAgCiAgICBEZXJpdmVkMSAqcHRyOwoKfTsKCmNsYXNzIERlcml2ZWQxIDogcHVibGljIEJhc2UKewpwdWJsaWM6CiAgICBEZXJpdmVkMShEZXJpdmVkMiYgb2JqKSA6IEJhc2UoKSwgcHRyKCZvYmopIHsKICAgIAlvYmoucHRyID0gdGhpczsKICAgIH0KcHJpdmF0ZToKICAgIERlcml2ZWQyICpwdHI7Cn07CgppbnQgbWFpbigpIHsKCQoJRGVyaXZlZDIgb2JqMjsKCURlcml2ZWQxIG9iajEob2JqMik7CgkKCgkKCXJldHVybiAwOwp9