n,m,*A=map(int,open(0).read().split())
if not m:print(*range(n,0,-1),sep='\n');exit()
f=[0]*m;ans=[0]*(n+1);l=r=c=0
while r<=n:
    if c==m:
        ans[r-l-1]+=1;ans[n-l]-=1
        if A[l]<m:f[A[l]]-=1; c-=f[A[l]]==0
        l+=1
    else:
        if r==n:break
        if A[r]<m:c+=f[A[r]]==0;f[A[r]]+=1
        r+=1
from itertools import accumulate
print(*list(accumulate(ans))[:-1],sep='\n')