def kiriage(a, b): return (a+b-1)//b N, M, T = map(int, input().split()) A = list(map(int, input().split())) cnt = [0]*N for a in A: cnt[a - 1] += 1 def solve(m): # m分以内に全て焼けるか? total = 0 for c in cnt: if c > m: # c - m 枚を別オーブンに委託 total -= c - m elif c == m: # このオーブン内で需給が簡潔 pass else: total += kiriage(m - c, T) return total >= 0 ok = 10**18 ng = 0 while abs(ok - ng) != 1: mid = (ok + ng)//2 if solve(mid): ok = mid else: ng = mid print(ok)