Вариация задачи о рюкзаке, цикл while не заканчивается (python)
Решала задачу:
Пират нашел на захваченном корабле N золотых слитков, каждый из
которых имеет значительный вес ( W i для слитка с номером i ).
Во время боя захваченный корабль получил серьёзные повреждения
и вот-вот затонет. Пират может увезти на шлюпке на свой корабль
только C килограммов груза. Какие слитки он должен выбрать,
чтобы увезти как можно больше золота?
Входные данные
Первая строка содержит грузоподъёмность шлюпки пирата C в
килограммах ( 1 ≤ C ≤ 5000 ). Во второй строке записано количество
найденных золотых слитков N ( 1 ≤ N ≤ 100 ). В третьей строке
записано N натуральных чисел: массы каждого слитка, разделённые
пробелами, в порядке возрастания (неубывания).
Выходные данные
В первой строке программа должна вывести наибольшую массу золотых
слитков, которые может вывезти пират. Во второй строке нужно
вывести массы взятых слитков в порядке убывания (невозрастания).
Если у задачи есть несколько вариантов решения, достаточно вывести
любой из них.
Примеры
входные данные
800
4
200 400 500 700
выходные данные
700
500 200
Кажется, это вариация задачи о рюкзаке, написала код:
n=int(input())
m=int(input())
a=list(map(int, input().split()))
ans=[]
while sum(ans)<n:
u=0
for i in a:
if sum(ans)+i<=n and i>u and i not in ans:
u=i
ans.append(u)
print(sum(ans))
print(ans)
Но когда я ввожу входные данные, ввод чисел не заканчивается, к тому же думаю, что если какой-то элемент будет повторяться в списке a, то программа будет выдавать неправильный ответ, не знаю, что делать... Помогите пожалуйста исправить код!!!!!