eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Контрольний блок

Контрольний блок

Фірма \textit{Macrohard} розробила новий протокол обміну даними по мережі. Кожен блок даних при цьому обміні складається з \textbf{N} чисел з діапазону від \textbf{0} до \textbf{M-1} включно. Щоб підвищити надійність передачі, разом з блоком даних пересилається контрольний блок такої ж довжини. Припустимо, що заданий блок складається з чисел \textbf{a_1}, \textbf{a_2}, ..., \textbf{a_N}. Тодя, контрольний блок складається з чисел \textbf{b_1}, \textbf{b_2}, ..., \textbf{b_N}, з діапазону від \textbf{0} до \textbf{M-1} включно, таких що виконуються наступні рівності: \textbf{b_1=(a_N+b_N) mod M},\textbf{b_2=(a_1+b_1) mod M}, \textbf{b_3=(a_2+b_2) mod M}, ..., \textbf{b_N=(a_\{N-1\}+b_\{N-1\}) mod M}, (позначення \textbf{X mod M} означає залишок від ділення \textbf{X} на \textbf{M}, наприклад, \textbf{7 mod 4 = 3}, \textbf{6 mod 2 = 0}). Блоки даних, для яких не можна побудувати контрольний блок, який задовольняє вказаній властивості, вважаються підозрілими і їх передача по мережі не дозволяється. Ваня хоче поступити на работу програмістом у фірму \textit{Macrohard}, і у якості вступного завдання йому доручили написати процедуру побудови контрольного блоку для заданого блоку даних. Допоможіть йому! \InputFile Перший рядок вхідного файлу містить числа \textbf{N} та \textbf{M} (\textbf{1} ≤ \textbf{N} ≤ \textbf{1000}, \textbf{2} ≤ \textbf{M} ≤ \textbf{10^9}). Наступний рядок містить блок даних, для якого потрібно побудувати контрольний блок, числа відокремлено пропусками. \OutputFile У першому рядку вихідного файлу виведіть \textbf{YES}, якщо для заданого блоку даних можна побудувати контрольний блок і \textbf{NO}, якщо не можна. У випадку, якщо контрольний блок побудувати можна, у другому рядку виведіть контрольний блок. Числа відокремлюйте пропусками. Якщо розв'язків декілька, можна вивести довільний з них.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
4 2
0 0 0 0
Вихідні дані #1
YES
0 0 0 0