#include #include using namespace std; using namespace atcoder; using ll = long long; using vi = vector; using vvi = vector; using vl = vector; using vvl = vector; using vs = vector; using vp = vector>; #define rep(i, s, n) for (int i = s; i < (int)(n); i++) #define sz(x) ((int)(x).size()) constexpr int INFI = 1001001001; constexpr ll INFL = (1LL << 60); int main (){ ios::sync_with_stdio(false); cin.tie(nullptr); // input ll n, m, t; cin >> n >> m >> t; vl a (m); map mp; rep(i, 0, m){ cin >> a[i]; mp[a[i]] ++; } ll mx = 0; for (auto [x, y] : mp){ mx = max(mx, y); } vl b; for (auto [x, y] : mp){ b.push_back(y); } sort (b.begin(), b.end()); while(true){ ll mn = b[0]; ll mx = b[sz(b) - 1]; if(mx - mn > t - 1){ b[0] ++; b[sz(b) - 1] --; mx = min(mx, mx + t - 1); sort (b.begin(), b.end()); } else break; // cerr <<"mx: "<< mx << "\n" ; } cerr <<"b:\n"; // for (auto x: b) {cerr << x <<" ";} cerr << "\n" ; cout << mx<< endl; return 0; }