← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var n int
	if _, err := fmt.Fscan(reader, &n); err != nil {
		return
	}

	a := make([]int, n+1)
	maxA := 0
	for i := 1; i <= n; i++ {
		fmt.Fscan(reader, &a[i])
		if a[i] > maxA {
			maxA = a[i]
		}
	}

	diff := make([]int, maxA+2)
	for i := 1; i <= n; i++ {
		if a[i-1] < a[i] {
			diff[a[i-1]]++
			diff[a[i]]--
		}
	}

	D := make([]int, maxA+1)
	cur := 0
	for i := 0; i <= maxA; i++ {
		cur += diff[i]
		D[i] = cur
	}

	for k := 1; k <= maxA; k++ {
		var ans int64
		for j := 0; j <= maxA; j += k {
			ans += int64(D[j])
		}
		if k == maxA {
			fmt.Fprintf(writer, "%d\n", ans)
		} else {
			fmt.Fprintf(writer, "%d ", ans)
		}
	}
}
```