void infix_print(node *cur, bool p = false) { // (a + b) * c + 7
    if (p)
        cout << "(";
    int pr = prio[cur-> opr]; 
    if (cur-> l) {
        int lo = prio[cur-> l-> opr];
        infix_print(cur-> l, lo < pr || (lo == pr && asso[cur-> opr] == 'r'));
    }
    cur-> print();
    if (cur-> r) {
        int ro = prio[cur-> r-> opr];
        infix_print(cur-> r, ro < pr || (ro == pr && asso[cur-> opr] == 'l'));
    }
    if (p)
        cout << ")";
}