#include <iostream>
#include <string>
#include <list>
using namespace std;
class test {
private:
string _name;
list<test*> _list;
public:
test(const string& S): _name(S) { this->_list.clear(); }
const string& to_string() {
string*sp = new string("[");
*sp += this->_name;
for(test*tp: this->_list) {
*sp += ",";
*sp += tp->to_string();
}
*sp += "]";
return *sp;
}
test& add(const string& S) {
test*tp = new test(S);
this->_list.push_back(tp);
return *tp;
}
};
int main() {
test x("one");
x.add("two");
test& y = x.add("three");
y.add("four");
cout << y.to_string() << '\n';
cout << x.to_string() << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bGlzdD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIHRlc3QgewogICAgcHJpdmF0ZToKICAgICAgICBzdHJpbmcgX25hbWU7CiAgICAgICAgbGlzdDx0ZXN0Kj4gX2xpc3Q7CiAgICBwdWJsaWM6CiAgICAgICAgdGVzdChjb25zdCBzdHJpbmcmIFMpOiBfbmFtZShTKSB7IHRoaXMtPl9saXN0LmNsZWFyKCk7IH0KCiAgICAgICAgY29uc3Qgc3RyaW5nJiB0b19zdHJpbmcoKSB7CiAgICAgICAgICAgIHN0cmluZypzcCA9IG5ldyBzdHJpbmcoIlsiKTsKICAgICAgICAgICAgKnNwICs9IHRoaXMtPl9uYW1lOwogICAgICAgICAgICBmb3IodGVzdCp0cDogdGhpcy0+X2xpc3QpIHsKICAgICAgICAgICAgICAgICpzcCArPSAiLCI7CiAgICAgICAgICAgICAgICAqc3AgKz0gdHAtPnRvX3N0cmluZygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICpzcCArPSAiXSI7CiAgICAgICAgICAgIHJldHVybiAqc3A7CiAgICAgICAgfQoKICAgICAgICB0ZXN0JiBhZGQoY29uc3Qgc3RyaW5nJiBTKSB7CiAgICAgICAgICAgIHRlc3QqdHAgPSBuZXcgdGVzdChTKTsKICAgICAgICAgICAgdGhpcy0+X2xpc3QucHVzaF9iYWNrKHRwKTsKICAgICAgICAgICAgcmV0dXJuICp0cDsKICAgICAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIHRlc3QgeCgib25lIik7CiAgICB4LmFkZCgidHdvIik7CiAgICB0ZXN0JiB5ID0geC5hZGQoInRocmVlIik7CiAgICB5LmFkZCgiZm91ciIpOwogICAgY291dCA8PCB5LnRvX3N0cmluZygpIDw8ICdcbic7CiAgICBjb3V0IDw8IHgudG9fc3RyaW5nKCkgPDwgJ1xuJzsKfQ==