void down(){ if(delta){ l->add(delta); r->add(delta); delta=0; } }
void push_down(){ if(this == NULLS) return ; if(rev){ l->reverse(); r->reverse(); rev = 0; } if(flag) { l->add(flag); r->add(flag); flag = 0; } }
void add(node * n) {tail=tail->add(n);}
void add(int p) {tail=tail->add(p);num++;}