# Arbitraje entre monedas

Una casa de cambio publica una tabla de tipos de cambio. Cada fila dice cuántas unidades de una moneda
se reciben por una unidad de otra. A veces la tabla está mal armada: cambiando en cadena, de moneda en
moneda, se vuelve a la moneda inicial con más dinero que al empezar, sin riesgo. Eso es un **arbitraje**.

La casa de cambio quiere revisar su tabla antes de publicarla. Ustedes reciben la tabla, dicen si hay
arbitraje y, si lo hay, muestran una cadena que lo pruebe.

Una **cadena** es una lista de monedas c₀, c₁, …, c_k, con k ≥ 2, en la que c₀ = c_k, las monedas c₀, …,
c_{k−1} son todas distintas, y la tabla tiene una tasa de cada moneda de la lista a la siguiente. Su
**producto** es la multiplicación de esas k tasas: lo que se tiene al final por cada unidad inicial.

Las tablas de este problema cumplen una **promesa**: el producto de toda cadena es a lo sumo 1, o es por
lo menos 1,000001. Nunca cae entre esos dos valores. Por lo tanto hay arbitraje exactamente cuando
alguna cadena tiene producto mayor que 1, y entonces ese producto es por lo menos 1,000001.

Una cadena con producto exactamente 1 no es arbitraje. Muchas tablas tienen tasas exactas entre todas sus
monedas, y en ellas todas las cadenas valen 1: la respuesta correcta es que no hay arbitraje, aunque los
números de una computadora, que se redondean, digan otra cosa.

## Entrada

La primera línea tiene dos enteros: n, la cantidad de monedas, y m, la cantidad de tasas. Las monedas se
numeran de 0 a n − 1.

Luego vienen m líneas, cada una con `u v r`: una unidad de la moneda u compra r unidades de la moneda v.
r se escribe con punto decimal, por ejemplo `0.8` o `1.000001`.

## Salida

Si no hay arbitraje, una línea con `NO`.

Si lo hay, tres líneas:

- `SI`
- el entero k, la cantidad de cambios de la cadena
- las k + 1 monedas c₀, c₁, …, c_k, separadas por espacios

Puede haber varias cadenas, y cualquiera vale: un verificador recalcula el producto con las tasas de la
entrada, y exige que la cadena cumpla la definición y que su producto supere 1,0000005.

## Límites

- 1 ≤ n ≤ 400
- 0 ≤ m ≤ n(n − 1)
- u ≠ v, y hay a lo sumo una tasa por cada par ordenado (u, v)
- 0,000001 ≤ r ≤ 1000000, con a lo sumo 15 decimales
- Se cumple la promesa de arriba

## Ejemplo

Entrada:

```text
4 6
0 1 0.3
1 2 0.9
2 0 4
0 3 2
3 1 0.1
2 3 1
```

Salida:

```text
SI
3
0 1 2 0
```

La cadena 0, 1, 2, 0 tiene producto 0,3 · 0,9 · 4 = 1,08. También sería correcto escribirla como 1, 2, 0, 1
o como 2, 0, 1, 2, con el mismo k. Las otras dos cadenas de la tabla no ganan: 0, 3, 1, 2, 0 tiene
producto 0,72 y 1, 2, 3, 1 tiene producto 0,09.

## Tiempo

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