code: function makeLisIndices(a) {
  		var p = a.slice()
  		var result = []
  		result.push(0)
  		var u
  		var v
  		for (var i = 0, il = a.length; i < il; ++i) {
  			if (a[i] === -1) {
  				continue
  			}
  			var j = result[result.length - 1]
  			if (a[j] < a[i]) {
  				p[i] = j
  				result.push(i)
  				continue
  			}
  			u = 0
  			v = result.length - 1
  			while (u < v) {
  				var c = ((u + v) / 2) | 0 // eslint-disable-line no-bitwise
  				if (a[result[c]] < a[i]) {
  					u = c + 1
  				}
  				else {
  					v = c
  				}
  			}
  			if (a[i] < a[result[u]]) {
  				if (u > 0) {
  					p[i] = result[u - 1]
  				}
  				result[u] = i
  			}
  		}
  		u = result.length
  		v = result[u - 1]
  		while (u-- > 0) {
  			result[u] = v
  			v = p[v]
  		}
  		return result
  	}
docs: Lifted from ivi https://github.com/ivijs/ivi/ takes a list of unique numbers (-1 is special and can occur multiple times) and returns an array with the indices of the items that are part of the longest increasing subsequece