#include <iostream>
#include <forward_list>
#include <string>

struct TMP {
	std::string idinahui;
	std::forward_list<TMP*> list;
	
	public:
	TMP* _this;
	TMP() {
		_this = this;
	}
};

int main() {
	TMP tmp;
	tmp.idinahui = "idinagui, suqa";

	tmp.list.push_front(&tmp);
	tmp.list.front()->list.push_front(&tmp);
	tmp.list.front()->list.front()->list.push_front(&tmp);

	tmp.list.front()->list.front()->idinahui = "SUQAAAAAAAAAA";

	tmp.list.front()->list.front()->list.front()->idinahui = "ABC";
	
	std::cout << "tmp._this = " << tmp._this << std::endl;

	std::cout << tmp.list.front() << std::endl;
	std::cout << tmp.list.front()->list.front() << std::endl;
	std::cout << tmp.list.front()->list.front()->list.front() << std::endl;

	std::cout << std::endl;

	std::cout << tmp.list.front()->idinahui << std::endl;
	std::cout << tmp.list.front()->list.front()->idinahui << std::endl;
	std::cout << tmp.list.front()->list.front()->list.front()->idinahui << std::endl;
}