Злам хеш-функції#1797

Злам хеш-функції

2 секунди
64 мегабайти
Дуже легка

У деяких задачах захисту інформації використовуються так звані хеш-функції. Одним із найважливіших класів хеш-функцій є поліноміальні хеш-функції.

Нехай задано рядок S = s_1 s_2 \ldots s_l, що складається з цифр від до . Значення поліноміальної хеш-функції p(S, x, m) обчислюється наступним чином:

(a \mod b означає залишок від ділення числа на число ). Наприклад, якщо S = 0123, тоді p(S, 2, 5) = (0 \cdot 1 + 1 \cdot 2 + 2 \cdot 4 + 3 \cdot 8) \mod 5 = 4.

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

Ваше завдання: за заданими , , і знайти рядок з цифр від до довжини , для якого значення поліноміальної хеш-функції p(S, x, m) дорівнює .

Вхідні дані

Вхідний файл містить чотири цілі числа: ( — просте число, 5 \leq x \leq 100), ( — степінь двійки, 1 \leq m \leq 256), (10 \leq L \leq 100), (0 \leq v \leq m-1).

Вихідні дані

Виведіть шуканий рядок або NO SOLUTION, якщо такого рядка не існує.

Приклади

Приклад 1

Loading
Loading