== include(page="template/taskheader" task_id="present") ==
Laika a decis să îi facă un cadou prietenei ei Azusa, vrăjitoarea din munţi. Din motive pe care nu le cunoaştem, cadoul va fi o mulţime finită de numere întregi pozitive. Ar fi o chestiune simplă să alegi un cadou, dar mai mulţi factori complică această sarcină.
În primul rând, duşmanul lui Laika, Flatorte, are puteri magice misterioase: dându-se două numere întregi $x$ şi $y$ ea poate crea cel mai mare divizor comun al lui $x$ şi $y$ (i.e. $gcd(x, y)$). Dacă Laika oferă un cadou în care Flatorte ar putea să adauge măcar un element (i.e. dacă oferă mulţimea $A$ pentru care $x, y$ apartin lui $A$, dar $gcd(x, y)$ nu apartine lui $A$), atunci Flatorte poate imediat să îşi tachineze rivalul. Din aceste motive, cadoul lui Laika nu trebuie să poată fi îmbunătăţit cu ajutorul puterilor lui Flatorte: dacă ea oferă mulţimea $A$ atunci pentru orice $x, y$ ce apartin lui $A$ trebuie să fie satisfăcută condiţia că $gcd(x, y)$ apartine lui $A$.
În al doilea rând, Laika vrea ca cadoul ei să aibă o semnificaţie specială. Au trecut exact $K$ zile de când a cunoscut-o pe Azusa şi ea vrea ca cadoul să indice acest lucru. De aceea Laika a aranjat toate mulţimile care satisfac condiţia explicată mai sus în ordine Laikană (explicată mai jos), obţinând astfel un şir infinit de mulţimi finite $S{~0~}, S{~1~}, ...$. Ea vrea să selecteze ca cadou mulţimea $S{~K~}$. Puteţi să o ajutaţi să îndeplinească această sarcină?
*Ordine Laikană.* Selectăm două mulţimi $A$ şi $B$. Atunci, $A$ apare înaintea lui $B$ în ordinea Laikană dacă şi numai dacă $max A < max B$, sau $max A = \max B$ şi $A - { max A }$ apare înaintea lui $B - { max B }$ în ordinea Laikană. În scopul acestei definiţii, fie $max {} = -infinit$. Observaţi că această ordine este întotdeauna bine definită pentru mulţimi finite de numere întregi pozitive.
h2. Date de intrare
Prima linie de input conţine un număr întreg $T$-numărul de teste. Fiecare din următoarele $T$ linii conţin o valoare $K$ pentru care noi vrem să aflăm $S{~K~}$.
h2. Date de ieşire
Pentru fiecare $T$ valori a lui $K$, afişaţi mulţimea $S{~K~}$. Pentru a afişa o mulţime, afişaţi o linie care începe cu numărul de elemente a mulţimii, iar apoi elementele acesteia, în ordine crescătoare.
h2. Restrictii
* $1 ≤ T ≤ 5$
* Pentru 8 puncte, $0 ≤ K ≤ 100$.
* Pentru 21 puncte, $0 ≤ K ≤ 1 000 000$.
* Pentru 41 puncte, $0 ≤ K ≤ 500 000 000$.
* Pentru 14 puncte, $0 ≤ K ≤ 1000 000 000$.
* Pentru 16 puncte, $0 ≤ K ≤ 1500 000 000$.
h2. Exemple
table(example). |_. present.in |_. present.out |
| 5
0
1
2
3
4
|0
1 1
1 2
2 1 2
1 3
| |4
5
6
100
1000 | 2 1 3
3 1 2 3
5 1 2 3 7 8
7 1 2 3 5 10 11 12 |
h2. Explicatii
Observaţi că $S_0 = \emptyset, S_1 = \{1\}, S_2 = \{2\}, S_3 = \{1, 2\}, S_4 = \{3\}, S_5 = \{1, 3\}, S_6 = \{1, 2, 3\}, S_{100} = \{1, 2, 3, 7, 8\}, S_{1000} = \{1, 2, 3, 5, 10, 11, 12\}$. Acestea sunt exact mulţimile afişate în exemplu (împreună cu mărimile lor). Observaţi că $S_6 \neq \{2, 3\}$ --- deaorece $2, 3 \in \{2, 3\}$, dar $\gcd(2, 3) = 1 \not \in \{2, 3\}$.
\end{document}
Poveste şi cerinţă...
h2. Date de intrare