// examples with random numbers and pointers
#include <random>
#include <iostream>
using namespace std;

//random_device dev;
//mt19937 gen (dev ()); // unpredictable random seed
mt19937 gen (1234567890); // seed is the same every time

struct Node;
using PNode = Node *;
struct Node
{
	int x;
	int y;
	PNode left;
	PNode right;

	Node (int x_)
	{
		x = x_;
		y = uniform_int_distribution <int> (0, 1E9) (gen);
		left = nullptr;
		right = nullptr;
	}
};

PNode fun ()
{
	PNode t = new Node (5);
	PNode q = new Node (7);
	(*t).right = q;
	t -> right = q;
	return t;
}

int main ()
{
	auto root = fun ();
	cout << root -> x << " " << root -> y << endl;
	cout << root -> right -> x << " " << root -> right -> y << endl;
	cout << root << " " << root -> left << " " << root -> right << endl;
	delete root;
	return 0;
}
