alpha, todo: use upper bound to optimize combination