Huy dự định mua cho Quân một thanh socola rất đắt tiền. Huy có \(n\) đồng tiền, đồng thứ \(i\) có giá trị là \(c_{i}\). Giá của thanh socola là \(k\), nên Huy sẽ lấy một tập các đồng tiền có tổng giá trị bằng \(k\) rồi đưa cho Quân.
Nhìn vào những đồng tiền Huy đang có, một câu hỏi hiện ra trong tâm trí Huy: sau khi đưa một tập các đồng tiền có tổng giá trị bằng \(k\) cho Quân, Quân có thể tạo ra bao nhiêu giá trị đồng tiền khác nhau bằng các đồng tiền từ tập Huy đưa?
Nói một cách cụ thể hơn, Huy muốn biết có bao nhiêu giá trị \(x\) có thể tạo ra được bằng cách chọn các phần tử trong tập hợp có tổng giá trị bằng \(k\).
Ví dụ, \(n\) = 3, \(k\) = 3, $c = $ \(1, 2, 3\).
Một tập có tổng bằng \(3\) là \({1, 2}\) thì có thể tạo ra được \(3\) giá trị \(0, 1, 2, 3\).
Input
Dòng đầu tiên là hai số \(n\) và \(k\) \((1 \leq n, k \leq 500)\).
Dòng thứ hai là \(n\) số nguyên dương \(c_{1}, c_{2}, c_{3}, ..., c_{n}\).
Output
Dòng đầu tiên là số số có thể tạo được.
Dòng thứ hai là các số có thể tạo được liệt kê trên \(1\) dòng theo thứ tự tăng dần.
Example
Test 1
Input
6 18
5 6 1 10 12 2
Output
16
0 1 2 3 5 6 7 8 10 11 12 13 15 16 17 18
Test 2
Input
3 50
25 25 50
Output
3
0 25 50
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.