from collections import deque N,M=map(int,input().split()) A=list(map(int,input().split())) if M==0: print(*[N-i for i in range(N)], sep = "\n") exit(0) left = [10**8 for _ in range(M)] dq= [deque() for _ in range(M)] for i in range(N): if A[i]>=M: continue left[A[i]]=min(left[A[i]], i) dq[A[i]].append(i) for i in range(M): dq[i].append(N) ans=max(left) fa=[0 for _ in range(N)] for i in range(N): if N>N-i>=0: fa[N-i]-=1 if N>ans-i>=0: fa[ans-i]+=1 if A[i]>=M: continue p=dq[A[i]].popleft() ans=max(ans,dq[A[i]][0]) for i in range(1,len(fa)): fa[i]+=fa[i-1] print(*fa,sep="\n")