```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n, m int
fmt.Fscan(reader, &n, &m)
counts := make([]int, 101)
sum := 0
for i := 0; i < n; i++ {
var t int
fmt.Fscan(reader, &t)
removedCount := 0
if sum+t > m {
needed := sum + t - m
for v := 100; v > 0; v-- {
if counts[v] > 0 {
contribution := counts[v] * v
if contribution >= needed {
countToRemove := (needed + v - 1) / v
removedCount += countToRemove
break
}
needed -= contribution
removedCount += counts[v]
}
}
}
if i > 0 {
writer.WriteByte(' ')
}
fmt.Fprint(writer, removedCount)
counts[t]++
sum += t
}
writer.WriteByte('\n')
}
```