enum Color { R, B }; template struct T; struct E; template struct balance { using type = T; }; template struct balance, y, c>, z, d> { using type = T, y, T>; }; template struct balance>, z, d> { using type = T, y, T>; }; template struct balance, z, d>> { using type = T, y, T>; }; template struct balance>> { using type = T, y, T>; }; template struct insert { template struct ins; template struct ins { using type = T; }; template struct ins> { template struct cond; template struct cond<-1, _> : balance::type, y, b> {}; template struct cond<1, _> : balance::type> {}; template struct cond<0, _> { using type = T; }; using type = typename cond::type; }; template struct repaint; template struct repaint> { using type = T; }; using type = typename repaint::type>::type; }; template using insert_t = typename insert::type; template void print(); int main() { print>>>>(); }