Uno dei compiti più importanti dell'informatica moderna è la modellazione dei processi biologici. Recentemente i biologi hanno scoperto $n$ virus, a ciascuno dei quali è stato assegnato un codice numerico univoco da $1$ a $n$. Un virus può inserirsi nelle cellule di altri organismi. Inizialmente gli scienziati dispongono di $n$ cellule, numerate da $1$ a $n$, e la cellula numero $i$ è infettata dal virus $i$. Ogni cellula può essere infettata da un solo virus.
Per ogni cellula è stato determinato il suo grado di suscettibilità a ciascun virus. Precisamente, per ogni cellula si conosce il virus a cui è più suscettibile, poi quello a cui è più suscettibile tra i virus rimanenti, e così via.
Le cellule infettate dai virus si attaccano a vicenda. Supponiamo che la cellula numero $i$ sia attualmente infettata dal virus numero $a$ e attacchi la cellula numero $j$, che è infettata dal virus numero $b$. Se la cellula numero $j$ è più suscettibile al virus $a$ che al virus $b$, allora la cellula numero $j$ viene infettata dal virus $a$.
Nell'esperimento, gli scienziati mettono tutte le $n$ cellule in un ambiente chiuso, dove esse possono attaccarsi a vicenda in qualsiasi modo. L'esperimento termina quando questi attacchi non possono più cambiare il virus che infetta alcuna cellula.
Gli scienziati chiamano il virus numero $i$ stabile se, per qualsiasi sequenza di attacchi tra cellule che porti alla conclusione dell'esperimento, rimane almeno una cellula infettata dal virus numero $i$.
Gli scienziati chiamano il virus numero $i$ vitale se esiste una sequenza di attacchi tra cellule che porti alla conclusione dell'esperimento, dopo la quale rimane almeno una cellula infettata dal virus numero $i$.
Per esempio, supponiamo che ci siano due virus e che la cellula numero $1$ sia più suscettibile al virus numero $1$, mentre la cellula numero $2$ sia più suscettibile al virus numero $2$. L'esperimento termina immediatamente: nessun attacco cambia il virus che infetta una cellula. Quindi entrambi i virus sono stabili e vitali.
Supponiamo ora che ci siano due virus, ma che la cellula numero $1$ sia più suscettibile al virus numero $2$ e la cellula numero $2$ al virus numero $1$. L'esperimento termina dopo qualsiasi attacco di una cellula all'altra. Sono possibili due scenari. Nel primo, la cellula $1$ attacca la cellula $2$ ed entrambe vengono infettate dal virus $1$. Nel secondo, la cellula $2$ attacca la cellula $1$ ed entrambe vengono infettate dal virus $2$. Quindi non ci sono virus stabili, ma entrambi i virus sono vitali.
Infine, supponiamo che ci siano due virus e che entrambe le cellule siano più suscettibili al virus numero $1$. L'attacco della cellula $2$ alla cellula $1$ non cambia il virus che la infetta, mentre, se la cellula $1$ attacca la cellula $2$, la seconda cellula viene infettata dal virus $1$. Di conseguenza, l'esperimento termina dopo l'attacco alla cellula $1$ da parte della cellula $2$; il virus $1$ è stabile e vitale, mentre il virus $2$ non possiede nessuna delle due proprietà.
Gli scienziati devono rispondere a due tipi di domande: quali virus sono stabili e quali virus sono vitali.
Scrivi un programma che, date le descrizioni delle cellule e il tipo di domanda, determini tutti i virus stabili oppure tutti i virus vitali.
Input
La prima riga contiene un intero $n$, il numero di virus e quindi di cellule, con $1\le n\le500$.
Le successive $n$ righe contengono le descrizioni delle cellule. Per ogni cellula sono indicati $n$ numeri distinti da $1$ a $n$: i numeri dei virus in ordine decrescente di suscettibilità della cellula a essi.
L'ultima riga contiene il numero $p$, che indica la proprietà dei virus di interesse per gli scienziati. Il valore $p=1$ significa che vogliono determinare tutti i virus stabili, mentre $p=2$ significa che vogliono determinare tutti i virus vitali.
Output
La prima riga deve contenere un intero $k$, il numero di virus che possiedono la proprietà di interesse, con $0\le k\le n$.
La seconda riga deve contenere $k$ interi, i numeri dei virus che possiedono tale proprietà. I numeri dei virus devono essere stampati in ordine crescente.
Esempi
Input 1
2 1 2 2 1 1
Output 1
2 1 2
Input 2
2 1 2 2 1 2
Output 2
2 1 2
Input 3
2 2 1 1 2 1
Output 3
0
Input 4
2 2 1 1 2 2
Output 4
2 1 2
Input 5
2 1 2 1 2 1
Output 5
1 1
Input 6
2 1 2 1 2 2
Output 6
1 1
Input 7
4 3 2 4 1 1 4 2 3 3 1 2 4 1 4 2 3 1
Output 7
1 3
Input 8
4 3 2 4 1 1 4 2 3 3 1 2 4 1 4 2 3 2
Output 8
3 1 3 4
Sottocompiti
| Sottocompito | Punti | Vincoli su $n$ | Vincoli su $p$ | Sottocompiti richiesti | Risultati durante la gara |
|---|---|---|---|---|---|
| $1$ | $11$ | $1\le n\le5$ | $p=1$ | Risultati per ciascun test | |
| $2$ | $21$ | $1\le n\le500$ | $p=1$ | $1$ | Primo errore |
| $3$ | $22$ | $1\le n\le5$ | Esempi, $1$ | Risultati per ciascun test | |
| $4$ | $31$ | $1\le n\le50$ | Esempi, $1$–$3$ | Primo errore | |
| $5$ | $15$ | $1\le n\le500$ | Esempi, $1$–$4$ | Primo errore |
Informazioni generali sui problemi del primo turno
I dati devono essere letti dallo standard input. I dati di output devono essere scritti sullo standard output.
In tutti i problemi, i punti di un sottocompito vengono assegnati solo se tutti i test del sottocompito sono superati.