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')