You are given an array of integers. Vasya can permute (change order) its integers. He wants to do it so that as many as possible integers will become on a place where a smaller integer used to stand. Help Vasya find the maximal number of such integers.

For instance, if we are given an array $[10, 20, 30, 40]$, we can permute it so that it becomes $[20, 40, 10, 30]$. Then on the first and the second positions the integers became larger ($20&gt;10$, $40&gt;20$) and did not on the third and the fourth, so for this permutation, the number that Vasya wants to maximize equals $2$. Read the note for the first example, there is one more demonstrative test case.

Help Vasya to permute integers in such way that the number of positions in a new array, where integers are greater than in the original one, is maximal.
The first line contains a single integer $n$ ($1 \leq n \leq 10^5$) — the length of the array.

The second line contains $n$ integers $a_1, a_2, \ldots, a_n$ ($1 \leq a_i \leq 10^9$) — the elements of the array.
7
10 1 1 1 5 5 3
4
5
1 1 1 1 1
0
6
300000000 200000000 300000000 200000000 1000000000 300000000
3
10
1 2 3 4 5 6 7 8 9 10
9
1
1
0
7
3 5 2 2 5 2 4
4
5
1 5 4 2 3
4
#include <bits/stdc++.h>
using namespace std;

#define ll long long

int main() {
    std::ios_base::sync_with_stdio(false);

    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);

    ll n;
    cin >> n;
    vector <ll> v(n);
    for (int i = 0; i < n; ++i) {
        cin >> v[i];
    }

    sort(v.begin(), v.end());

    vector <ll> amount(0);
    ll element = 0;
    for (int i = 0; i < n; ++i) {
        element = v[i];
        amount.push_back(0);
        while (i < n && v[i] == element) {
            ++amount[amount.size() - 1];
            ++i;
        }
        --i;
    }

    ll depo = amount[0], res = 0;
    for (int i = 1; i < amount.size(); ++i) {
        res += min(amount[i], depo);
        depo = abs(depo - amount[i]) + amount[i];
    }

    cout << res << '\n';

    return 0;
}