#include <iostream>
using namespace std;
template <class T>
class Set
{
public:
Set();
~Set();
void push(const T&);
bool belongs(const T&) const;
void remove(const T&);
const T& min() const;
const T& max() const;
unsigned int cardinal() const;
void show(std::ostream&) const;
friend ostream& operator<<(ostream& os, const Set<T> &c) {
c.show(os);
return os;
}
struct Node
{
Node(const T& v);
T value;
Node* left;
Node* right;
};
private:
Node* root_;
int cardinal_;
// This function is the one with errors.
Node & fatherOfNode(const Node & root, const T & key, const bool hook) const;
};
template <class T>
typename Set<T>::Node & Set<T>::fatherOfNode(const Set<T>::Node & root, const T & key, const bool hook) const {
// Some code
}
int main() {
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIFNldAp7CiAgICBwdWJsaWM6CiAgICAgICAgU2V0KCk7CiAgICAgICAgflNldCgpOwogICAgICAgIHZvaWQgcHVzaChjb25zdCBUJik7CiAgICAgICAgYm9vbCBiZWxvbmdzKGNvbnN0IFQmKSBjb25zdDsKICAgICAgICB2b2lkIHJlbW92ZShjb25zdCBUJik7CiAgICAgICAgY29uc3QgVCYgbWluKCkgY29uc3Q7CiAgICAgICAgY29uc3QgVCYgbWF4KCkgY29uc3Q7CiAgICAgICAgdW5zaWduZWQgaW50IGNhcmRpbmFsKCkgY29uc3Q7CiAgICAgICAgdm9pZCBzaG93KHN0ZDo6b3N0cmVhbSYpIGNvbnN0OwoKICAgICAgICBmcmllbmQgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvcywgY29uc3QgU2V0PFQ+ICZjKSB7CiAgICAgICAgICAgIGMuc2hvdyhvcyk7CiAgICAgICAgICAgIHJldHVybiBvczsKICAgICAgICB9CiAgICAgICAgc3RydWN0IE5vZGUKICAgICAgICB7CiAgICAgICAgICAgIE5vZGUoY29uc3QgVCYgdik7CiAgICAgICAgICAgIFQgdmFsdWU7CiAgICAgICAgICAgIE5vZGUqIGxlZnQ7CiAgICAgICAgICAgIE5vZGUqIHJpZ2h0OyAKICAgICAgICB9OwogICAgcHJpdmF0ZToKCgoKICAgICAgICBOb2RlKiByb290XzsKICAgICAgICBpbnQgY2FyZGluYWxfOwoKICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdGhlIG9uZSB3aXRoIGVycm9ycy4KICAgIE5vZGUgJiBmYXRoZXJPZk5vZGUoY29uc3QgTm9kZSAmIHJvb3QsIGNvbnN0IFQgJiBrZXksIGNvbnN0IGJvb2wgaG9vaykgY29uc3Q7Cgp9OwoKdGVtcGxhdGUgPGNsYXNzIFQ+CnR5cGVuYW1lIFNldDxUPjo6Tm9kZSAmIFNldDxUPjo6ZmF0aGVyT2ZOb2RlKGNvbnN0IFNldDxUPjo6Tm9kZSAmIHJvb3QsIGNvbnN0IFQgJiBrZXksIGNvbnN0IGJvb2wgaG9vaykgY29uc3QgewogICAgLy8gU29tZSBjb2RlCn0KCmludCBtYWluKCkgewoJCgoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJcmV0dXJuIDA7Cn0=