To zadanie z dwoma uruchomieniami. Dla każdego testu twoje rozwiązanie zostanie uruchomione dwukrotnie.
Na lekcji informatyki Алеся i Борис uczą się kryptografii. Postanowili wymyślić własną metodę szyfrowania wiadomości.
Алеся wybiera $k$ różnych liczb całkowitych od $1$ do $n$ i oznacza otrzymany zbiór przez $T$. Chce przekazać zbiór $T$ jako zaszyfrowaną wiadomość osobie o imieniu Борис. W tym celu na podstawie zbioru $T$ utworzy i przekaże inny zbiór $R$, również złożony z liczb całkowitych od $1$ do $n$.
Nie chcą, aby po zaszyfrowaniu rozmiar wiadomości się zmienił, więc $R$ również musi zawierać dokładnie $k$ liczb. Uważają też, że jeśli $T$ i $R$ mają choć jeden wspólny element, ich szyfrowanie nie będzie wystarczająco bezpieczne. Nie może więc istnieć liczba należąca zarówno do $T$, jak i do $R$, czyli zbiory $T$ i $R$ muszą być rozłączne. Zagwarantowano, że $k\le n/2$, dlatego na podstawie zbioru $T$ zawsze można utworzyć co najmniej jeden zbiór $R$.
Gdy Борис otrzyma zaszyfrowaną wiadomość $R$, musi ją odszyfrować i otrzymać pierwotną wiadomość $T$.
Pomóż im opracować i zaimplementować algorytmy szyfrowania oraz odszyfrowywania. Przy pierwszym uruchomieniu twój program będzie pełnił rolę osoby o imieniu Алеся, a przy drugim — osoby o imieniu Борис.
Wejście
W pierwszym wierszu wejścia znajduje się jedna liczba $a$, równa $1$ lub $2$ — numer uruchomienia twojego programu.
W drugim wierszu znajduje się jedna liczba $m$ — liczba wiadomości ($1\le m\le300\,000$), które twój program ma zaszyfrować przy pierwszym uruchomieniu lub odszyfrować przy drugim.
Następne $2m$ wierszy zawiera opisy $m$ wiadomości, po dwa wiersze na wiadomość.
W pierwszym wierszu opisu wiadomości znajdują się dwie liczby całkowite $n_i$ i $k_i$ ($2\le n_i\le10^9$, $1\le k_i\le300\,000$, $k_i\le\frac{n_i}{2}$). W drugim wierszu znajduje się $k_i$ różnych liczb całkowitych od $1$ do $n_i$, w kolejności rosnącej.
Zagwarantowano, że suma wszystkich wartości $k_i$ w jednym teście nie przekracza $300\,000$.
Jeśli $a=1$, podane liczby są pierwotną wiadomością. Jeśli $a=2$, podane liczby są wynikiem zaszyfrowania pewnej wiadomości przez twój program przy jego pierwszym uruchomieniu.
Wyjście
Program powinien wypisać $m$ wierszy. W $i$-tym wierszu powinno znaleźć się $k_i$ różnych liczb całkowitych od $1$ do $n_i$, w kolejności rosnącej.
Przy pierwszym uruchomieniu dla każdej pierwotnej wiadomości $T_i$ program powinien wypisać zbiór $R_i$, rozłączny z $T_i$.
Przy drugim uruchomieniu dla każdej zaszyfrowanej wiadomości $R_i$ program powinien odtworzyć pierwotną wiadomość $T_i$.
Przykład
Pierwsze uruchomienie
Wejście 1
1 2 2 1 1 5 2 1 4
Wyjście 1
2 2 3
Drugie uruchomienie
Wejście 2
2 2 5 2 2 3 2 1 2
Wyjście 2
1 4 1
Uwagi
Zwróć uwagę, że w przykładzie podano konkretne warianty wyjścia przy pierwszym uruchomieniu i wejścia przy drugim. Jeśli twój program wypisze inny zbiór $R$, wejście przy drugim uruchomieniu też będzie inne.
Ponadto przy drugim uruchomieniu zaszyfrowane wiadomości nie muszą być przekazane programowi uczestnika w tej samej kolejności, w jakiej występowały przy pierwszym uruchomieniu.
Podzadania
Aby określić dodatkowe ograniczenia danych wejściowych, oznaczmy ciąg liczb tworzących zbiór $T_i$ przez $t_1,t_2,\ldots,t_{k_i}$. Liczby te są uporządkowane rosnąco.
Oznaczmy sumę $n_i$ w jednym teście przez $N$.
Oznaczmy sumę $k_i$ w jednym teście przez $K$.
| Podzadanie | Punkty | Dodatkowe ograniczenia: $n_i,N$ | Dodatkowe ograniczenia: $k_i,K$ | Dodatkowe ograniczenia: $t_j$ | Wymagane podzadania | Informacja o sprawdzaniu |
|---|---|---|---|---|---|---|
| 1 | 9 | $N\le5000$ | $k_i=1$ | Pierwszy błąd | ||
| 2 | 11 | $N\le5000$ | $k_i=2$ | Pierwszy błąd | ||
| 3 | 9 | $N\le300\,000$ | $k_i=\frac{n_i}{2}$ | Pierwszy błąd | ||
| 4 | 7 | $n_i\le7$, $N\le5000$ | Przykład | Pierwszy błąd | ||
| 5 | 9 | $t_{j+1}-t_j\ge2$, $t_{k_i}\le n_i-1$ | Pierwszy błąd | |||
| 6 | 9 | $t_{k_i}-t_1\le\frac{n_i}{2}-1$ | Pierwszy błąd | |||
| 7 | 10 | $N \le 5000$ | $t_{k_i}\le n_i-k_i$ | Pierwszy błąd | ||
| 8 | 12 | $N\le100$ | Przykład | Pierwszy błąd | ||
| 9 | 3 | $N\le5000$ | Przykład, 1–2, 4, 7–8 | Pierwszy błąd | ||
| 10 | 7 | $N \le 300\,000$ | Przykład, 1–4, 7–9 | Pierwszy błąd | ||
| 11 | 7 | $K\le5000$ | Przykład, 1–2, 4, 7–9 | Pierwszy błąd | ||
| 12 | 7 | Bez dodatkowych ograniczeń | Przykład, 1–11 | Pierwszy błąd |