Witam, prosiłbym o pomoc w rozwiązaniu tego zadania, w języku C++

Franek sędziował ostatnio zawody w bieganiu i wszystko poszło dobrze, poza jednym szczegółem. Mianowicie, Franek był trochę niedokładny przez co nie do końca zapamiętał jakie czasy uzyskali zawodnicy! Franek, pamięta dla każdego zawodnika tylko, że uzyskał jeden z dwóch czasów, ale nie jest w stanie stwierdzić który. W zawodach startowało N zawodników i każdy z nich przybiegł do mety po pewnym czasie, podanym w sekundach. Franek dla każdego zawodnika I, mówi że zawodnik przybył na metę po AI lub BI sekundach. Na przykład, Franek mógłby powiedzieć: "Pamiętam, że zawodnik numer 3 przybiegł na metę po czasie 10 lub 15
sekund." Franek zastanawia się teraz, jak rozstrzygnąć kto wygrał bieg. Jako że nie zapamiętał dokładnie czasów, może się okazać, że nie da się jednoznacznie określić zwycięzcy. Dlatego Franek chce zdecydować dla każdego zawodnika, czy istnieje jakaś konfiguracja czasów zawodników, która zgadza się z tym co pamięta i w której
ten zawodnik wygrywa. Zawodnik wygrywa wyścig tylko wtedy kiedy ma mniejszy czas od wszystkich innych zawodników. Przypadek remisu na pierwszym miejscu nie jest traktowany jako zwycięstwo.

W pierwszej linii wejścia znajduje się jedna liczba całkowita N (1 ≤ N ≤ 10^6) oznaczająca liczbę zawodników biorących udział w biegu.
W kolejnych N liniach wejścia znajdują się po dwie liczby całkowite AI, BI (1 ≤ AI , BI ≤ 10^9 , AI /= BI) oznaczające możliwe czasy I-tego zawodnika.

Na wyjściu powinno znaleźć się N linii. W I-tej linii wyjścia należy wypisać TAK jeśli istnieje jakaś konfiguracja wyników w której I-ty zawodnik wygrywa wyścig lub NIE w przeciwnym wypadku.

Np. testuj dla przykładowych danych:
2
1 3
2 10 -> Odpowiedzi to: TAK, TAK.
lub:
4
4 10
5 2
3 1
4 3 -> Odpowiedzi to: NIE, TAK, TAK, NIE.