13049. Коники


Відправити розв'язок

Бали: 100
Time limit: 15.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Відпочиваючи на лузі, ви помітили дивовижне видовище: Група коників стрибала в колі. Після тривалого спостереження за тим, що відбувається, ви зрозуміли, що їхні рухи не випадкові, а наслідують певний математичний шаблон.

Усього є \(m\) зазначених точок на колі. Ці точки пронумеровані від \(1\) до \(m\) у порядку їх появи на колі і вони поділяють коло на дуги рівної довжини.

У деяких із цих точок є коники, можливо більше одного в одній точці. Коники пронумеровані від \(1\) до \(n\). Кожну секунду коники перестрибують на нове місце згідно з таким правилом: якщо на початку секунди коники \(1, 2, \ldots, n\) знаходилися в точках \(A_1, A_2, \ldots, A_n\) відповідно, і \(O\) --- це центр кола , то до кінця секунди коники будуть перебувати в позиціях \(B_1, B_2, \ldots, B_n\), де \(B_k\) --- це відображення точки \(A_k\) щодо прямої \(OA_{k+1}\) для \(k = 1, 2, \ldots, n - 1\), і \(B_n\) --- це відображення точки \(A_n\) щодо прямої \(OA_1\).

Коники не обов'язково пронумеровані відповідно до їх порядку на колі, та їх номери не змінюються під час дії.

Вам потрібно йти додому зараз, але вам цікаво, що станеться з кониками далі. Маючи початкове розташування коників, знайдіть їх положення після \(t\) секунд.

Формат вхідних даних

Перший рядок містить кількість тестових випадків \(z\) (\(1 \leq z \leq 100\)). Далі слідує опис тестів.

Перший рядок кожного тесту містить три цілих числа \(n, m, t\) (\(1 \leq n \leq 100\,000\), \(3 \leq m \leq 100\), \(1 \leq t \leq 10^9\)): у коників, у зазначених точок на колі й у секунд.

У другому рядку записано \(n\) цілих чисел, що позначають стартові позиції коників. Позиція --- це ціле число від \(1\) до \(m\) включно.

Сумарна кількість коників у всіх тестових випадках не перевищує \( 200 \, 000 \).

Формат вихідних даних

Для кожного тестового випадку виведіть позиції коників через \(t\) секунд з початку спостереження. Числа розділяйте пробілами.

Приклад вхідних даних

2
3 5 1
1 1 2
3 5 4
1 1 2

Приклад вихідних даних

1 3 5 
5 4 5

Коментарі

Ще немає коментарів.