#include <iostream>

using namespace std;

template <class T>
struct Node {
    T data;
    Node* left;
    Node* right;
};

Node<int>* getTop() {
    Node<int>* top = new Node<int>{1, nullptr, nullptr};
    top->left = new Node<int>{2, nullptr, nullptr};
    top->left->left = new Node<int>{3, nullptr, nullptr};
    top->left->right = new Node<int>{5, nullptr, nullptr};
    top->left->right->left = new Node<int>{4, nullptr, nullptr};
    top->right = new Node<int>{6, nullptr, nullptr};
    top->right->right = new Node<int>{8, nullptr, nullptr};
    top->right->right->left = new Node<int>{7, nullptr, nullptr};
    top->right->right->right = new Node<int>{9, nullptr, nullptr};
    return top;
}

int main()
{
    auto top = getTop();
    auto seven = tree_get(top, right, right, left); // 7
    auto four = tree_get(top, left, right, left); // 4
    std::cout << seven->data << ' ' << four->data;

    return 0;
}