code: def calc_parent(self, i, j, h):
          
          N = self.repo.array_size
          c_i = i
          c_j = j
          c_h = h
          # Calculate the number of the sequence in its row (sequences
          # with same height), from left to right, starting from 0.
          c_n = c_i // (N ** c_h)
          p_n = c_n // N
          # Position of the child ID in the parent array.
          p_p = c_n % N
          # Parent height is child height plus one.
          p_h = c_h + 1
          # Span of sequences in parent row is max size N, to the power of the height.
          span = N ** p_h
          # Calculate parent i and j.
          p_i = p_n * span
          p_j = p_i + span
          # Check the parent i,j bounds the child i,j, ie child span is contained by parent span.
          assert p_i <= c_i, 'i greater on parent than child: {}'.format(p_i, p_j)
          assert p_j >= c_j, 'j less on parent than child: {}'.format(p_i, p_j)
          # Return parent i, j, h, p.
          return p_i, p_j, p_h, p_p
docs: Returns get_big_array and end of span of parent sequence that contains given child.