#STK0000076. Phần tử có tần suất lớn hơn tiếp theo (Next Greater Frequency)

Phần tử có tần suất lớn hơn tiếp theo (Next Greater Frequency)

Phần tử có tần suất lớn hơn tiếp theo (Next Greater Frequency)

Nguồn: Baekjoon Online Judge

Phiên bản: Phước Hưng OJ Extended

Đề bài

Cho dãy A1,A2,…,ANA_1,A_2,\ldots,A_N. Gọi F(x)F(x) là số lần giá trị xx xuất hiện trong toàn bộ dãy. Với mỗi vị trí ii, hãy tìm phần tử đầu tiên AjA_j ở bên phải sao cho F(Aj)>F(Ai)F(A_j)>F(A_i). Nếu không tồn tại, kết quả là −1-1.

Input

Dòng đầu chứa số nguyên NN. Dòng thứ hai chứa NN số nguyên A1,A2,…,ANA_1,A_2,\ldots,A_N.

Output

In NN giá trị. Giá trị thứ ii là phần tử có tần suất lớn hơn tiếp theo của AiA_i, hoặc −1-1 nếu không có.

Subtask

  • Subtask 1 (30 điểm): N≤2000N\le2000; các điều kiện khác giữ nguyên.
  • Subtask 2 (70 điểm): 1≤N≤1061\le N\le10^6, 1≤Ai≤1061\le A_i\le10^6.

Ví dụ

Input

7
1 1 2 3 4 2 1

Output

-1 -1 1 2 2 1 -1

Giải thích

Trước hết đếm số lần xuất hiện trong toàn bộ dãy:

  • F(1)=3F(1)=3;
  • F(2)=2F(2)=2;
  • F(3)=1F(3)=1;
  • F(4)=1F(4)=1.

Xét từng vị trí:

  • Hai số 11 đầu tiên có tần suất 33, là tần suất lớn nhất trong dãy, nên đều nhận −1-1.
  • Với số 22 ở vị trí 33, các số 3,4,23,4,2 phía sau có tần suất không lớn hơn 22; số 11 cuối có tần suất 3>23>2, nên nhận 11.
  • Với số 33 ở vị trí 44, số 44 kế tiếp cũng chỉ có tần suất 11, còn số 22 sau đó có tần suất 2>12>1, nên nhận 22.
  • Với số 44 ở vị trí 55, số 22 ngay sau có tần suất 2>12>1, nên nhận 22.
  • Với số 22 ở vị trí 66, số 11 cuối có tần suất 3>23>2, nên nhận 11.
  • Số 11 cuối cùng không có phần tử phía sau, nên nhận −1-1.

Kết quả là -1 -1 1 2 2 1 -1.