func integerBreak(n int) int {
	if n < 4 {
		return n - 1
	}
	sqrt := int(math.Sqrt(float64(n)))
	max := helper(n, sqrt)
	for i := sqrt + 1; i < n/2; i++ {
		if tmp := helper(n, i); max < tmp {
			max = tmp
		}
	}
	return max
}

func helper(n, k int) int {
	div, mod, prod := n/k, n%k, 1
	for i := 0; i < k; i++ {
		if i < mod {
			prod *= div + 1
		} else {
			prod *= div
		}
	}
	return prod
}