Se dau două numere naturale N și M. Se consideră un șir de numere de lungime N indexat de la 0 căruia trebuie să i se atribuie valori astfel încât să se respecte M restricții de forma:
0 i val1 val2 - elementul i poate avea doar valoarea val1 sau val2
1 i j val – fix unul dintre elementele de pe pozițiile i și j trebuie să aibă valoarea val
2 i j – elementele de pe pozițiile i și j trebuie să aibă valori diferite
3 i j – elementele de pe pozițiile i și j trebuie să aibă aceeași valoare
Cerința
Determinați o atribuire de valori asupra șirului astfel încât acesta să respecte cele M restricții.
Date de intrare
Pe prima linie din fișierul valori.in se află două numere naturale N și M. Pe a doua linie din fișierul de intrare se află cele M restricții. Primele N restricții (N + 1 linii) reprezintă restricții de tipul 0. Următoarele M – N linii sunt restricții de tipul 1, 2, sau 3.
Date de ieșire
Fișierul de ieșire valori.out va conține valorile atribuite fiecărui element din șirul de lungime N.
Restricții și precizări
1 ≤ N ≤ 10.0001 ≤ M ≤ 40.000- Toate valorile din input se vor încadra be 32 de biti.
- Se poate afișa orice soluție corectă.
- Se garantează ca există cel puțin o soluție.
Exemplu:
valori.in
6 10 0 0 1 2 0 1 1 0 0 2 3 2 0 3 2 3 0 4 1 0 0 5 1 3 1 2 3 2 2 0 4 3 1 0 3 5 1
valori.out
1 1 3 2 0 1