```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)
}
}
}
```