Problem description


Harmonogram
(harmonogram)
Memory limit: 512 MB
Time limit: 10.00 s

Jasio wykonuje zdalne zlecenie dla firmy informatycznej. Zlecenie polega na napisaniu wielkiego systemu informatycznego. Jasio nie może zdradzić nam szczegółów, ale może powiedzieć, że wykonał już projekt takiego systemu, w którym podzielił pracę na N etapów. Niestety, nie wszystkie etapy są parami niezależne – niektóre należy wykonać wcześniej, zanim wykona się inne (bowiem kod niektórych etapów może opierać się na kodzie innych).

Jasio dobrze zna szefa firmy, dla której wykonuje zlecenie. Nie jest on informatykiem i część niezbędnych prac przygotowawczych nie ma dla niego większego znaczenia i wydaje się mu, że nie są one potrzebne. Podobnie wykonanie ostatnich poprawek, ustawienie kopii zapasowych itp. też nie jest dla niego zbyt ważne (do czasu). Jasio przedstawił mu swój podział na etapy pracy.

Szef powiedział, że według niego praca rozpoczyna się od etapu s, a kończy na wykonaniu etapu t i tylko za tyle zapłaci. Jasio się z tym oczywiście nie zgadza, ale przekonywanie klienta nie ma większego sensu, bo ma on zawsze rację. Chciałby wybrać kolejność wykonywania etapów prac w taki sposób, żeby ciąg wykonywanych prac pomiędzy etapem s a etapem t był jak najdłuższy – Jasio ma nadzieję, że to zmaksymalizuje jego zarobek.

Napisz program, który: wczyta opis relacji pomiędzy etapami oraz wyznaczone przez szefa szczególne etapy według niego rozpoczynające i kończące całe zlecenie, wyznaczy maksymalną liczbę etapów, które mogą być wykonane pomiędzy etapem początkowym a końcowym i wypisze wynik na standardowe wyjście.

Wejście

W pierwszym wierszu wejścia znajdują się dwie liczby naturalne N oraz M, oddzielone pojedynczym odstępem i określające kolejno: liczbę etapów prac oraz liczbę relacji między nimi. W drugim wierszu wejścia znajdują się dwie różne liczby naturalne s oraz t, oddzielone pojedynczym odstępem – numery etapów wyznaczone przez klienta jako początkowy i końcowy etap prac nad systemem.

W kolejnych M wierszach znajduje się opis relacji etapów pracy, po jednym w wierszu. Każdy z nich zawiera dwie liczby naturalne xi oraz yi, oddzielone pojedynczym odstępem. Taki wiersz informuje, że etap numer xi musi być wykonany przed etapem yi (niekoniecznie bezpośrednio).

Etapy są numerowane kolejnymi liczbami naturalnymi od 1 do N. Relacje pomiędzy etapami podane na wejściu nie powtarzają się.

Wyjście

W pierwszym (i jedynym) wierszu wyjścia powinna się znaleźć jedna liczba całkowita – maksymalna liczba etapów, które można wykonać pomiędzy etapami s i t przy zachowaniu poprawnej kolejności wykonywania etapów zgodnie z zależnościami pomiędzy nimi.

Uwaga

Możesz założyć, że dane wejściowe są poprawne. W szczególności: Jasio wyznaczył relacje między etapami prac w taki sposób, że nie ma zależności cyklicznych i poprawne uporządkowanie etapów prac zawsze istnieje. Dodatkowo, klient jako początek pracy nie wybrał etapu, który musi być wykonany później niż etap wybrany jako koniec pracy.

Ograniczenia

2 ≤ N ≤ 200 000, 1 ≤ M ≤ 500 000.

Przykład

Input Output Explanation
10 11
1 4
1 2
2 4
2 3
2 10
6 1
7 1
1 3
8 3
3 4
9 4
4 5
5

Przykładowa kolejność etapów satysfakcjonująca Jasia będzie następująca: (6,7,1,2,8,3,10,9,4,5). Etapy o numerach 2, 8, 3, 10, 9 są wykonane pomiędzy etapami 1 oraz 4. Nie istnieje żadna kolejność, która byłaby zgodna z relacjami z wejścia i zawierała więcej niż pięć etapów pomiędzy etapami 1 oraz 4.