program subjects;
const
MAXN = 100000;
MAXM = 1000;
var
M, N, P, i, j, h,a, b, conta : LongInt;
K : Array[0..MAXN-1] of LongInt;
S : Array[0..MAXN-1] of Array[0..5] of LongInt;
ans : Array[0..MAXM-1] of Array[0..1] of LongInt;
graph : array[0..MAXM-1] of array of LongInt;
gsize, gcapa, materia: array[0..MAXN-1] of longint;
begin
{
uncomment the two following lines if you want to read/write from files
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
}
ReadLn(N, M);
for i := 0 to N - 1 do
begin
Read(K[i]);
for j := 0 to K[i] - 1 do
Read(S[i][j]);
end;
for h:=0 to M-1 do
begin
setlength(graph[h], 1);
(* all’inizio, la lista di adiacenza del nodo i ha dimensione 0
* e capacita’ 1.
*)
gsize[h] := 0;
gcapa[h] := 1;
end;
for i:=0 to N-1 do
begin
for j:=0 to K[i]-1 do
begin
a:= S[i][j]; b:=i; end; end; end.
(* se ho esaurito i posti nella lista di adiacenza del nodo a *)
if gsize[a] = gcapa[a] then
begin
(* allora raddoppio la sua capacita’ *)
gcapa[a] := gcapa[a] shl 1;
setlength(graph[a], gcapa[a]);
end;
graph[a][gsize[a]] := b;
inc(gsize[a]);
end;
end; end.
P := 0; conta:=0; conta:=0;
for i := 0 to 2 - 1 do
for j := 0 to MAXM - 1 do
ans[j][i] := 0;
for i:=0 to M-1 do if gsize[i]=0 then begin conta:=conta+1; materia[conta]:=i; end;
for i:=0 to M do
begin
for j:=0 to N do write (graph[i][j],' ');
writeln;
end;
end.
WriteLn(P);
for i := 0 to P - 1 do
begin
for j := 0 to 2 - 1 do
Write(ans[i][j], ' ');
WriteLn();
end;
end.
cHJvZ3JhbSBzdWJqZWN0czsKCmNvbnN0CiAgICBNQVhOID0gMTAwMDAwOwogICAgTUFYTSA9IDEwMDA7Cgp2YXIKICAgIE0sIE4sIFAsIGksIGosIGgsYSwgYiwgY29udGEgOiBMb25nSW50OwogICAgSyAgICAgICAgICAgICA6IEFycmF5WzAuLk1BWE4tMV0gb2YgTG9uZ0ludDsKICAgIFMgICAgICAgICAgICAgOiBBcnJheVswLi5NQVhOLTFdIG9mIEFycmF5WzAuLjVdIG9mIExvbmdJbnQ7CiAgICBhbnMgICAgICAgICAgIDogQXJyYXlbMC4uTUFYTS0xXSBvZiBBcnJheVswLi4xXSBvZiBMb25nSW50OwogICAgZ3JhcGggICAgICAgICA6IGFycmF5WzAuLk1BWE0tMV0gb2YgYXJyYXkgb2YgTG9uZ0ludDsKICAgIGdzaXplLCBnY2FwYSwgbWF0ZXJpYTogYXJyYXlbMC4uTUFYTi0xXSBvZiBsb25naW50OwogICAgCmJlZ2luCnsKICAgIHVuY29tbWVudCB0aGUgdHdvIGZvbGxvd2luZyBsaW5lcyBpZiB5b3Ugd2FudCB0byByZWFkL3dyaXRlIGZyb20gZmlsZXMKICAgIGFzc2lnbihpbnB1dCwgICdpbnB1dC50eHQnKTsgIHJlc2V0KGlucHV0KTsKICAgIGFzc2lnbihvdXRwdXQsICdvdXRwdXQudHh0Jyk7IHJld3JpdGUob3V0cHV0KTsKfQoKICAgIFJlYWRMbihOLCBNKTsKCiAgICBmb3IgaSA6PSAwIHRvIE4gLSAxIGRvIAogICAgYmVnaW4gICAgICAgIAogICAgICAgIFJlYWQoS1tpXSk7CiAgICAgICAgZm9yIGogOj0gMCB0byBLW2ldIC0gMSBkbwogICAgICAgICAgICBSZWFkKFNbaV1bal0pOwogICAgZW5kOwoKCiAgIGZvciBoOj0wIHRvIE0tMSBkbwogICAgYmVnaW4KICAgICBzZXRsZW5ndGgoZ3JhcGhbaF0sIDEpOwogICAgICgqIGFsbOKAmWluaXppbywgbGEgbGlzdGEgZGkgYWRpYWNlbnphIGRlbCBub2RvIGkgaGEgZGltZW5zaW9uZSAwCiAgICAgICAqIGUgY2FwYWNpdGHigJkgMS4KICAgICAqKQogICAgIGdzaXplW2hdIDo9IDA7CiAgICAgZ2NhcGFbaF0gOj0gMTsKICAgZW5kOwogIGZvciBpOj0wIHRvIE4tMSBkbwogICAgICBiZWdpbgogICAgICAgICBmb3Igajo9MCB0byBLW2ldLTEgZG8KICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICBhOj0gU1tpXVtqXTsgYjo9aTsgZW5kOyBlbmQ7IGVuZC4KICAgICAgICAgICAgICAgKCogc2UgaG8gZXNhdXJpdG8gaSBwb3N0aSBuZWxsYSBsaXN0YSBkaSBhZGlhY2VuemEgZGVsIG5vZG8gYSAqKQogICAgICAgICAgICAgICBpZiBnc2l6ZVthXSA9IGdjYXBhW2FdIHRoZW4KICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAoKiBhbGxvcmEgcmFkZG9wcGlvIGxhIHN1YSBjYXBhY2l0YeKAmSAqKQogICAgICAgICAgICAgICAgICAgIGdjYXBhW2FdIDo9IGdjYXBhW2FdIHNobCAxOwogICAgICAgICAgICAgICAgICAgIHNldGxlbmd0aChncmFwaFthXSwgZ2NhcGFbYV0pOwogICAgICAgICAgICAgICAgIGVuZDsKICAgIAkJIGdyYXBoW2FdW2dzaXplW2FdXSA6PSBiOwogICAgICAgICAgICAgaW5jKGdzaXplW2FdKTsKICAgICAgICAgICAgIGVuZDsKICAgICAgZW5kOyAgZW5kLgogICAgUCA6PSAwOyBjb250YTo9MDsgY29udGE6PTA7CiAgICBmb3IgaSA6PSAwIHRvIDIgLSAxIGRvCiAgICAgICAgZm9yIGogOj0gMCB0byBNQVhNIC0gMSBkbwogICAgICAgICAgICBhbnNbal1baV0gOj0gMDsKICAgIGZvciBpOj0wIHRvIE0tMSBkbyBpZiBnc2l6ZVtpXT0wIHRoZW4gYmVnaW4gY29udGE6PWNvbnRhKzE7IG1hdGVyaWFbY29udGFdOj1pOyBlbmQ7CgogIGZvciBpOj0wIHRvIE0gZG8KICAgICAgICBiZWdpbgogICAgICAgICAgZm9yIGo6PTAgdG8gTiBkbyB3cml0ZSAoZ3JhcGhbaV1bal0sJyAnKTsKICAgICAgICAgIHdyaXRlbG47CiAgICAgICAgZW5kOyAgCiAgIGVuZC4gICAgICAgICAgIAogICAgICAgIAogICAgV3JpdGVMbihQKTsKICAgIGZvciBpIDo9IDAgdG8gUCAtIDEgZG8gCiAgICBiZWdpbgogICAgICAgIGZvciBqIDo9IDAgdG8gMiAtIDEgZG8KICAgICAgICAgICAgV3JpdGUoYW5zW2ldW2pdLCAnICcpOwogICAgICAgIFdyaXRlTG4oKTsKICAgIGVuZDsKCmVuZC4K