code: def getPath(cls, seqNo, offset=0):
          
          if offset >= seqNo:
              raise ValueError("Offset should be less than serial number")
          pwr = highest_bit_set(seqNo - 1 - offset) - 1
          if pwr <= 0:
              if seqNo % 2 == 0:
                  return [seqNo - 1], []
              else:
                  return [], []
          c = pow(2, pwr) + offset
          leafs, nodes = cls.getPath(seqNo, c)
          nodes.append(cls.getNodePosition(c, pwr))
          return leafs, nodes
docs: Get the audit path of the leaf at the position specified by serNo.
  
          :param seqNo: sequence number of the leaf to calculate the path for
          :param offset: the sequence number of the node from where the path
           should begin.
          :return: tuple of leafs and nodes