code: def query(self, u, v):
          
          lu = self.last[u]
          lv = self.last[v]
          if lu > lv:
              lu, lv = lv, lu
          return self.rmq.range_min(lu, lv + 1)[1]
docs: :returns: the lowest common ancestor of u and v
          :complexity: O(log n)