# Asignar estudiantes a secciones

Empieza la matrícula de un curso con varias secciones de laboratorio. Cada estudiante, según su horario, puede
asistir solo a algunas de ellas, y cada sección tiene un cupo, porque el aula tiene una cantidad fija de
computadoras. La oficina de matrícula quiere asignar a la mayor cantidad posible de estudiantes. Un estudiante va a
una sola sección, o se queda sin sección. Decidir bien importa: que alguien tome la primera sección con cupo puede
dejar fuera a otra persona que solo podía ir a esa.

Ustedes reciben los horarios y los cupos, y escriben la asignación.

## Entrada

La primera línea tiene dos enteros: n, la cantidad de estudiantes, y m, la cantidad de secciones. Los dos se numeran
desde 1.

La segunda línea tiene m enteros: el cupo de cada sección. Un cupo puede ser 0, y puede ser mayor que n.

Luego vienen n líneas, una por estudiante. Cada una empieza con d, la cantidad de secciones a las que ese estudiante
puede asistir, seguida de d números de sección distintos. d puede ser 0: hay estudiantes sin ninguna opción.

## Salida

La primera línea tiene k, la mayor cantidad de estudiantes que se puede asignar. Luego vienen k líneas, en cualquier
orden, cada una con dos enteros: un estudiante y la sección que le toca.

Ningún estudiante puede aparecer dos veces, cada uno debe ir a una sección de su lista, y ninguna sección puede
superar su cupo.

Puede haber varias asignaciones con k estudiantes, y cualquiera vale: un verificador revisa su respuesta.

## Límites

- 1 ≤ n ≤ 2000
- 1 ≤ m ≤ 2000
- 0 ≤ cupo ≤ 5000
- La suma de todos los d es a lo sumo 40000.

## Ejemplo

Entrada:

```text
5 3
1 2 1
2 1 2
1 1
2 2 3
1 1
1 3
```

Salida:

```text
4
1 2
2 1
3 2
5 3
```

Los estudiantes 2 y 4 solo pueden ir a la sección 1, que tiene cupo 1, así que uno de los dos se queda fuera y no se
puede con más de 4. También vale asignar a 4 en vez de 2, o enviar a 3 a otra sección si cabe.

## Tiempo

1 segundo por caso, compilado con `-O2`. Corran `make test` para probar con el juez.
