#include //#include using namespace std; //using namespace atcoder; using ll = long long; //using mint = modint998244353; int main(){ cin.tie(nullptr); ios_base::sync_with_stdio(false); /* c(i) = オーブンiで焼くと1分で焼けるクッキーの数 x分で焼けるか? まず、min(x, c(i))個のクッキーを焼く。 c(i)-x>0ならその分は他のところに回す。 x-c(i)>0なら余剰があり、(x-c(i))/T個のクッキーを追加で焼ける。 */ ll N, M, T; cin >> N >> M >> T; vector c(N+1); for (int i=1; i<=M; i++){ ll a; cin >> a; c[a]++; } auto check=[&](ll x)->bool{ ll a=0, b=0; //a:残りのクッキー、b:余剰で焼けるクッキーの数 for (int i=1; i<=N; i++){ if (c[i]-x>0) a += c[i]-x; else if (x-c[i]>0) b += (x-c[i])/T; } return a<=b; }; ll l=0, r=M, mid; while(r-l>1){ mid = (l+r)/2; if (check(mid)) r=mid; else l=mid; } cout << r << endl; return 0; }