( P 1 , ▁var )); ▁▁ ▁} ▁▁▁▁ ▁Change ▁( P , ▁var ) ▁{ ▁▁▁▁ ▁if ▁( P . top ▁< ▁var ) ▁return ▁Get node ▁( var , ▁ ø , ▁P ); ▁▁▁▁▁ ▁if ▁( P . top ▁== ▁var ) ▁return ▁Get node ▁( var , ▁P 1 , ▁P 0 ); ▁▁▁▁ ▁if ▁( P . top ▁> ▁var ) ▁▁▁▁▁▁ ▁return ▁Get node ▁( P . top , ▁Change ( P 0 , ▁var ), ▁Change ( P 1 , ▁var )); ▁▁ ▁} ▁▁▁▁ ▁Union ▁( P , ▁Q ) ▁{ ▁▁▁▁ ▁if ▁( P ▁== ▁ ø ) ▁return ▁Q ; ▁▁▁▁▁ ▁if ▁( Q ▁== ▁ ø ) ▁return ▁P ; ▁▁▁▁ ▁if ▁( P ▁== ▁Q ) ▁return ▁P ; ▁▁▁▁ ▁if ▁( P . top ▁> ▁Q . top ) ▁return ▁Get node ▁( P . top , ▁Union ( P 0 , ▁Q ), ▁P 1 ); ▁▁▁▁ ▁if ▁( P . top ▁< ▁Q . top ) ▁return ▁Get node ▁( Q . top , ▁Union ( P , ▁Q 0 ), ▁Q 1 ); ▁▁▁▁ ▁if ▁( P . top ▁== ▁Q . top ) ▁▁▁▁▁▁▁ ▁return ▁Get node ▁( P . top , ▁Union ( P 0 , ▁Q 0 ), ▁Union ( P 1 , ▁Q 1 )); ▁▁ ▁} ▁▁▁ ▁Int sec ▁( P , ▁Q ) ▁{ ▁▁▁▁ ▁if ▁( P ▁== ▁ ø ) ▁return ▁ ø ; ▁▁▁▁▁ ▁if ▁( Q ▁==