int[] frequence = new int[1000001];
for (int i = 0; i < n; i++) {
data[i] = sc.nextInt();
frequence[data[i]]++;
}
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < n; i++) {
if (stack.isEmpty()) {
stack.push(i);
}
while (!stack.isEmpty() && frequence[data[stack.peek()]] < frequence[data[i]]) {
answer[stack.pop()] = data[i];
}
stack.push(i);
}
while (!stack.empty()) {
answer[stack.pop()] = -1;
}