import
java.util.*;
class
GFG{
static
void
maximumSubsequence(
int
arr[],
int
N)
{
HashMap<Integer,
Integer> M =
new
HashMap<Integer,
Integer>();
for
(
int
i =
0
; i < N; i++)
{
if
(M.containsKey(arr[i]))
{
M.put(arr[i], M.get(arr[i]) +
1
);
}
else
{
M.put(arr[i],
1
);
}
}
int
distinct_size = M.size();
int
maxFreq =
1
;
for
(Map.Entry<Integer, Integer> it : M.entrySet())
{
maxFreq = Math.max(maxFreq, it.getValue());
}
System.out.print(Math.max(
Math.min(distinct_size, maxFreq -
1
),
Math.min(distinct_size -
1
, maxFreq)));
}
public
static
void
main(String[] args)
{
int
arr[] = {
1
,
2
,
3
,
4
,
4
,
4
,
4
,
4
,
5
};
int
N = arr.length;
maximumSubsequence(arr, N);
}
}