# Turnos sin conflicto

Un pabellón de laboratorios tiene n secciones, numeradas de 1 a n. Cada sección se dicta en un solo turno: mañana o tarde.
Docentes, estudiantes y la oficina de horarios mandan m pedidos, y hay que elegir el turno de cada sección para cumplirlos
todos, o decir que no se puede.

Cada pedido habla de dos **condiciones**. Una condición es un entero distinto de 0: el entero `s`, positivo, significa "la
sección s va de mañana", y el entero `-s` significa "la sección s va de tarde". Hay cuatro clases de pedido:

| Pedido | Qué exige |
|---|---|
| `O p q` | Se cumple p, o q, o las dos. |
| `N p q` | No se cumplen p y q a la vez. |
| `S p q` | Si se cumple p, también se cumple q. |
| `D p q` | Se cumple exactamente una de las dos. |

Las dos condiciones de un pedido pueden hablar de la misma sección. Por ejemplo, `O 3 3` exige que la sección 3 vaya de mañana,
`O 3 -3` no exige nada, y `D 3 3` no se puede cumplir de ninguna manera. Un mismo pedido puede repetirse. Una sección de la que
nadie habla también recibe un turno.

## Entrada

La primera línea tiene dos enteros, n y m. Luego vienen m líneas, cada una con una letra (`O`, `N`, `S` o `D`) y dos enteros p y q.

## Salida

Si se pueden cumplir todos los pedidos, escriban `SI` y, en la línea siguiente, una cadena de exactamente n letras. La letra número
s es `M` si la sección s va de mañana, y `T` si va de tarde. Si no se pueden cumplir todos, escriban solo `NO`.

Puede haber varios horarios correctos, y cualquiera vale: un verificador revisa su respuesta.

## Límites

- 1 ≤ n ≤ 500 000
- 0 ≤ m ≤ 500 000
- 1 ≤ |p|, |q| ≤ n

## Ejemplo

Entrada:

```text
4 5
O 1 2
S 1 -3
D 3 4
N 2 4
O 4 -1
```

Salida:

```text
SI
TMMT
```

Con la sección 1 de tarde, y 2 y 3 de mañana y 4 de tarde: `O 1 2` se cumple por la sección 2. `S 1 -3` se cumple porque la
sección 1 no va de mañana. `D 3 4` se cumple porque solo la condición 3 es cierta. `N 2 4` se cumple porque la sección 4 no va de
mañana, y `O 4 -1` porque la sección 1 va de tarde.

## Tiempo

2 segundos por caso, compilado con `-O2`. Corran `make test` para probar con el juez. Algunos casos no se guardan, por su tamaño:
los genera `casos/gen_NN.cpp`. La pila del juez es la que trae el contenedor por defecto: `ulimit -s` responde 8192, en KB.
