Монети#4470

Монети

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

Можна використовувати монети різних фіксованих номіналів, виражених у копійках (наприклад, і копійок), і їх доступно у необмеженій кількості. Напишіть програму COINS, яка:

  1. Визначає, чи можна задану суму (у копійках) скласти із доступних номіналів монет.

  2. Якщо це можливо, представляє цю суму з використанням мінімальної кількості монет.

Вхідні дані

Вхідний файл починається із суми (0 \leq S \leq 1000000000) у першому рядку. У другому рядку знаходиться  — кількість різних номіналів (1 \leq N \leq 20). Далі йдуть рядків із номіналами A_1, A_2, \ldots, A_N у зростаючому порядку, причому для кожного номіналу виконується нерівність (0 < A_1 < A_2 < \ldots < A_N \leq 1000000000).

Вихідні дані

У вихідному файлі на першому рядку слід вивести символ "+", якщо суму можна скласти за допомогою заданих номіналів, або символ "-", якщо це неможливо. Якщо подання можливе, у наступних рядках слід вказати кількість монет кожного номіналу, необхідних для отримання суми з використанням мінімальної кількості монет.

Приклади

Приклад 1

Loading
Loading