Олимпиадный тренинг

Задача . A. Разрежь ленточку


Задача

Темы: дп Перебор *1300

У Поликарпа есть ленточка длины n. Он хочет разрезать ее так, чтобы выполнялись два условия:

  • После разрезания, каждый кусочек ленточки должен быть длины a, b или c.
  • Количество кусочков ленточки после разрезания должно быть как можно больше.

Помогите Поликарпу, найдите количество кусочков ленточки после требуемого разрезания.

Входные данные

В первой строке записано через пробел четыре целых числа n, a, b и c (1 ≤ n, a, b, c ≤ 4000) — длина исходной ленточки и разрешенные длины кусочков ленточки после разрезания, соответственно. Числа a, b и c могут совпадать.

Выходные данные

Выведите одно число — максимально возможное количество кусочков ленточки. Гарантируется, что существует хотя бы одно корректное разрезание ленточки.

Примечание

В первом тестовом примере нужно разрезать ленточку на два кусочка: один из них длины 2, второй длины 3.

Во втором примере нужно разрезать ленточку на два кусочка: один из них длины 5, второй длины 2.


Примеры
Входные данныеВыходные данные
1 5 5 3 2
2
2 7 5 5 2
2

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя