Перемішані дерева#11329

Перемішані дерева

1 секунда
128 мегабайтів
Легка

Задано неорієнтований зв'язний граф з вершинами та ребрами. У кожного ребра є лічильник, початково рівний . За одну операцію можна вибрати довільне остовне дерево і додати одне й те ж значення до всіх ребер цього дерева.

Визначте, чи можливо домогтися того, щоб лічильник кожного ребра став рівним своєму цільовому значенню x_i за модулем простого числа . Якщо це можливо, виведіть послідовність операцій, яка призводить до заданої конфігурації.

Вхідні дані

Перший рядок містить три цілі числа та p~(1 \le n \le 500, 1 \le m \le 1000, 2 \le p \le 10^9) — кількість вершин, кількість ребер та модуль. Відомо, що — просте число.

Наступні рядків містять по три цілі числа u_i, v_i, x_i~(1 \le u_i, v_i \le n, 0 \le x_i < p, u_i \ne v_i) — кінці -го ребра та його цільове значення.

Граф зв'язний. Циклів в ньому немає, але між одними й тими ж вершинами може існувати декілька ребер.

Вихідні дані

Якщо досягти цільових значень неможливо, виведіть .

У протилежному випадку, виведіть число операцій , а потім рядків з їхнім описом. Кожен рядок починається з цілого числа v~(0 \le v < p) — приросту для даної операції. Потім йдуть n - 1 цілих чисел e_1, e_2, \dots, e_{n-1}~(1 \le e_i \le m) — ребра, що утворюють обране остовне дерево.

Кількість операцій не повинна перевищувати . Мінімізувати не потрібно: допускається будь-яка коректна відповідь у межах цього обмеження. Дозволяється використовувати одне й те ж остовне дерево кілька разів.

Приклади

Приклад 1

Loading
Loading

Приклад 2

Loading
Loading

Приклад 3

Loading
Loading