union_find & segment_tree