Cho một dãy số và một số tự nhiên $K$.
Trong dãy, chúng ta tìm số lớn nhất tại các vị trí chia hết cho $K$, trong đó các vị trí của các số trong dãy được đánh số bắt đầu từ 0. Nói cách khác, chúng ta tìm số lớn nhất tại các vị trí $0, K, 2K, 3K, \dots$. Nếu có nhiều số lớn nhất như vậy, ta chọn số đầu tiên trong số đó. Số tìm được sẽ bị xóa khỏi dãy, và các số theo sau nó sẽ tự động dịch chuyển sang trái một vị trí, tức là thay đổi vị trí của chúng để lấp đầy "khoảng trống" vừa tạo ra.
Chúng ta lặp lại bước mô tả trên cho đến khi không còn số nào trong dãy. Hãy viết chương trình thực hiện công việc này.
Dữ liệu vào
Dòng đầu tiên chứa hai số tự nhiên $N$ và $K$ ($2 \le K \le N \le 100\,000$).
Dòng tiếp theo chứa $N$ số tự nhiên có giá trị trong khoảng $[1, N]$ tạo thành dãy đã cho, theo thứ tự từ vị trí thứ 0 đến vị trí thứ $(N - 1)$.
Dữ liệu ra
In ra $N$ số tự nhiên, trong đó số thứ $i$ được in ra bằng với số bị xóa trong bước thứ $i$.
Nhiệm vụ con
| Nhiệm vụ con | Số điểm | Giới hạn bổ sung |
|---|---|---|
| 1 | 7 | $N \le 1000$ |
| 2 | 25 | $K = 2$ |
| 3 | 23 | $K \le 10$ |
| 4 | 25 | $100 \le K \le N$ |
| 5 | 20 | không có giới hạn bổ sung |
Ví dụ
Dữ liệu vào 1
10 2 2 3 1 9 10 4 5 6 1 5
Dữ liệu ra 1
10 6 4 5 2 9 3 5 1 1
Dữ liệu vào 2
10 3 2 3 1 9 10 4 5 6 1 5
Dữ liệu ra 2
9 10 4 5 6 2 5 3 1 1