Задано неорієнтований зв'язний граф з вершинами та ребрами. У кожного ребра є лічильник, початково рівний . За одну операцію можна вибрати довільне остовне дерево і додати одне й те ж значення до всіх ребер цього дерева.
Визначте, чи можливо домогтися того, щоб лічильник кожного ребра став рівним своєму цільовому значенню 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
Приклад 2
Приклад 3