func leastInterval(tasks []byte, n int) int {
	freq := make([]int, 26)
	for _, t := range tasks {
		freq[t-'A']++
	}
	max, cnt := freq[0], 0
	for _, i := range freq {
		if max < i {
			max, cnt = i, 1
		} else if max == i {
			cnt++
		}
	}
	res := (max-1)*(n+1) + cnt
	if l := len(tasks); res < l {
		return l // If n is small enough, all tasks can be processed one by one
	}
	return res
}