Клітинний автомат#6293

Клітинний автомат

5 секунд
64 мегабайти
Середня

Клітинний автомат — це набір клітин на сітці певної форми, що розвивається через дискретні часові кроки відповідно до правил, які визначають новий стан клітини на основі станів сусідніх клітин. Порядок клітинного автомата — це кількість клітин, які він містить. Клітини автомата порядку нумеруються від до .

Порядок клітини — це кількість різних значень, які вона може мати. Зазвичай значення клітини порядку вважаються цілими числами від до m-1.

Однією з основних характеристик клітинного автомата є тип сітки, на якій він функціонує. У цій задачі ми розглядаємо особливий вид клітинного автомата — круговий клітинний автомат порядку з клітинами порядку . Ми будемо позначати такий автомат як -автомат.

Відстань між клітинами та в -автоматі визначається як \min(|i-j|, n-|i-j|). -оточення клітини — це набір клітин, що знаходяться на відстані не більше ніж .

На кожному -кроці значення всіх клітин одночасно замінюються новими значеннями. Нове значення клітини після -кроку обчислюється як сума значень клітин, що входять до -оточення клітини , за модулем .

Наступне зображення демонструє -крок -автомата.

Завдання полягає в обчисленні стану -автомата після -кроків.

Вхідні дані

Перша строка вхідних даних містить чотири цілі числа , , та (1 \le n \le 500, 1 \le m \le 1000000, 0 \le d < n/2, 1 \le k \le 10000000). Друга строка містить цілих чисел від до m-1 — початкові значення клітин автомата.

Вихідні дані

Виведіть значення клітин -автомата після -кроків.

Приклади

Приклад 1

Loading
Loading