Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Problem plecakowy
(plecak-odwroc)
Memory limit: 64 MB
Time limit: 2.00 s

Być może znany jest Ci problem plecakowy. W jednym z najprostszych wariantów można go opisać następująco: dany jest zbiór przedmiotów, znana jest masa każdego z przedmiotów, celem jest zapakować plecak przedmiotami o sumarycznej masie K kilogramów.

Być może znasz też rozwiązanie tego zadania oparte o programowanie dynamiczne, w którym zaczynamy od sytuacji świata bez przedmiotów, w którym da się tylko zapakować plecak o pojemności 0 kilogramów. Następnie każdy krok programu to przejście do świata, w którym jest już kolejny przedmiot. Program w każdym kroku oblicza więc pojemności plecaków, które można zapakować podzbiorem prefiksu ciągu przedmiotów.

Tym razem nie będzie jednak tak łatwo, bo zadanie będzie odwrotne. Otrzymujesz informację o pojemnościach plecaków, które można upakować przedmiotami o nieznanych masach. Twoim zadaniem jest wyznaczyć masy przedmiotów, które były wejściem dla algorytmu rozwiązującego problem plecakowy. Innymi słowy, nieco precyzyjniej, wybrano ciąg liczb (masy przedmiotów) T, i na wejściu znajdzie się tyle kopii liczby S, ile wynosi liczba podzbiorów T sumujących się do S. Przedmioty są parami różne, nawet jeśli mają te same masy.

Napisz program, który: wczyta masy plecaków możliwych do zapakowania nieznanymi przedmiotami, wyznaczy masy przedmiotów i wypisze wynik na standardowe wyjście.

Wejście

W pierwszym wierszu wejścia znajduje się jedna liczba naturalna N, określająca liczbę podzbiorów przedmiotów. W drugim (ostatnim) wierszu wejścia znajduje się ciąg N nieujemnych liczb całkowitych Ai pooddzielanych pojedynczymi odstępami: sumaryczne masy podzbiorów przedmiotów.

Wyjście

W pierwszym wierszu wyjścia należy wypisać jedną nieujemną liczbę całkowitą R: liczbę przedmiotów, które były wejściem do algorytmu plecakowego. W drugim wierszu wyjścia należy wypisać niemalejący ciąg R liczb naturalnych pooddzielanych pojedynczymi odstępami: masy przedmiotów, które były wejściem do algorytmu plecakowego.

Ograniczenia

1 ≤ N ≤ 1 000 000, 0 ≤ Si ≤ 1018.

Przykład

Input Output
8
0 5 10 7 12 12 5 17
3
5 5 7