Перехрестя в місті з'єднані вулицями з одностороннім рухом. Напишіть програму, яка обчислить кількість різних маршрутів між кожною парою перехресть. Маршрут — це послідовність односторонніх вулиць, що з'єднують два перехрестя.
Перехрестя позначаються невід'ємними цілими числами. Одностороння вулиця задається парою перехресть, які вона з'єднує. Наприклад, означає, що є одностороння вулиця від перехрестя до перехрестя . Зауважте, що двосторонню вулицю можна змоделювати двома односторонніми: та .
Розглянемо місто з чотирма перехрестями, з'єднаними наступним чином:
Є один маршрут від перехрестя до , два маршрути від до (це 0 \to 1 \to 2 та 0 \to 2), два маршрути від до , один маршрут від до , один маршрут від до , один маршрут від до і жодного іншого маршруту.
Може трапитися так, що існує нескінченно багато різних маршрутів між деякими перехрестями. Наприклад, якщо до наведених вище вулиць додати , то від до буде лиш один маршрут, але тепер існує нескінченно багато різних маршрутів від до . Це пов'язано з тим, що після досягнення та можна скільки завгодно разів повторювати шлях між та у різні боки й отримувати нові різні маршрути. Наприклад, 0 \to 2 \to 3 \to 2 \to 3 \to 2 та 0 \to 2 \to 3 \to 2 — це різні маршрути.
Перше число — це кількість односторонніх вулиць у місті, далі йде опис цих вулиць. Кожна вулиця представляється парою перехресть, які вона з'єднує: кожна пара — це одностороння вулиця від перехрестя до . У всіх містах перехрестя нумеруються послідовно від до найбільшого номера перехрестя. Усі цілі числа у вхідних даних розділені пробілом.
Ніколи не буде вулиці, яка з'єднує перехрестя саме із собою. Жодне місто не матиме більше перехресть.
Виведіть квадратну матрицю, що містить кількість різних маршрутів між перехрестями і . Якщо позначити вихідну матрицю як , то M_{j k} — це кількість різних маршрутів від перехрестя до перехрестя . Виводьте матрицю по рядках, у порядку зростання номерів рядків.
Якщо між двома перехрестями існує нескінченно багато маршрутів, виведіть . Не переймайтеся вирівнюванням та форматуванням виводу. Усі числа в кожному рядку матриці розділяйте одним пробілом.
Приклад 1
Приклад 2