def binary_search(f): left,right=0,10**9+1 while right-left>1: mid=(right+left)//2 if not f(mid): left=mid else: right=mid return right from collections import defaultdict def f(x): rest = 0 for i in range(N): rest-=max(0,dic[i]-x) rest+=max(0,(x-dic[i])//T) return rest >= 0 N,M,T=map(int,input().split()) A=list(map(int,input().split())) dic=[0]*N for a in A: dic[a-1]+= 1 print(binary_search(f))