from collections import deque N,M=map(int,input().split()) A=[min(a,M) for a in list(map(int,input().split()))] less=1 cnt=[0]*(M+1) cnt[M]=1 rng=deque() ans=[0]*(N+2) for i in range(N): if cnt[A[i]]==0: less+=1 cnt[A[i]]+=1 rng.append(A[i]) while less>M: if len(rng)==0 or cnt[rng[0]]==1: break cnt[rng[0]]-=1 rng.popleft() if less>M: ans[len(rng)]+=1 ans[i+2]-=1 for i in range(N): ans[i+1]+=ans[i] print(ans[i+1])