#include <bits/stdc++.h>

using namespace std;

struct node;
using nodeptr = node*;
struct node
{
	nodeptr l, r;
	int x, y;
	bool rev;

	~node ()
	{
		/// delete nullptr ничего не делает, гарантируется стандартом (???)
		delete l;
		delete r;
	}
};

nodeptr merge (nodeptr l, nodeptr)
{
	return l;
}

pair<nodeptr, nodeptr> split (nodeptr v)
{
	return {v, v};
}

//struct treap_manager
//{
//	struct node
//	{
//		int l, r;
//		int x, y;
//	};
//
//	mt19937 rng_priority;
//	vector<node> pool;
//
//
//};

int main()
{
	cerr << sizeof(nodeptr) << ' ' << 8 << endl;
	cerr << "sizeof(node) = " << sizeof(node) << endl;
	cerr << "sizeof(node.rev) = " << sizeof(node().rev) << endl;

	/// создаём вершины
	for (int i = 0; i < 10; i++)
		new node();
	/// вызвать delete для корней

	return 0;
}
