Điều hướng chính

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Mua sô cô la

Dễ

  • 100 Điểm
  • 0% Tỉ lệ AC
  • 0 Số AC
  • 256M Bộ nhớ giới hạn
  • 1.5s Giới hạn thời gian

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

Chưa có bình luận nào.