\begin{problem}{Минимальное контролирующее множество}{minimal.in}{minimal.out}{2 секунды}{64 мегабайта}

Требуется построить в двудольном графе минимальное контролирующее множество,
если дано максимальное паросочетание.

\InputFile

В первой строке файла даны два числа $m$ и $n$ ($1\le m, n\le 4\,000$) ---
размеры долей. Каждая из следующих $m$ строк содержит список ребер,
выходящих из соответствующей вершины первой доли. Этот список
начинается с числа $K_i$ ($0\le K_i\le n$) --- количества ребер,
после которого записаны вершины второй доли, соединенные с данной вершиной
первой доли, в произвольном порядке. Сумма всех $K_i$ во входном
файле не превосходит $500\,000$.
Последняя строка файла содержит некоторое максимальное паросочетание в этом
графе --- $m$ чисел $0\le L_i\le n$ --- соответствующая $i$-й вершине первой
доли вершина второй доли, или 0, если $i$-я вершина первой доли не входит
в паросочетание.

\OutputFile

Первая строка содержит размер минимального контролирующего множества.
Вторая строка содержит количество вершин первой доли $S$, после которого
записаны $S$ чисел --- номера вершин первой доли, входящих в контролирующее
множество, в возрастающем порядке.
Третья строка содержит описание вершин второй доли в аналогичном формате.

\Example

\begin{example}
\exmp{
3 2
2 1 2
1 2
1 2
1 2 0
}{
2
1 1
1 2
}%
\end{example}

\end{problem}
