QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 128 MB Total points: 100

#10658. Transformacje

الإحصائيات

Dane są dwa słowa $ u $ i $ v $ złożone z liter a i b. Naszym celem jest przekształcić słowo $ u $ w słowo $ v $. Mamy w tym celu do dyspozycji następującą operację zamiany: wybieramy dwa $ rozłączne $ fragmenty ab i ba w pierwszym słowie i zamieniamy je miejscami. Czy, wykonując skończoną liczbę takich operacji, możemy przekształcić $ u $ w $ v $?

Input Format

Pierwszy wiersz wejścia zawiera jedną liczbę całkowitą $ n $ ($2 \le n \le 1\,000\,000$), oznaczającą długość słów. Każdy z dwóch następnych wierszy zawiera ciąg złożony z $ n $ znaków a i/lub b. Pierwszy wiersz opisuje słowo $ u $, a drugi - słowo $ v $. Możesz założyć, że słowa te będą różne.

Output Format

W pierwszym wierszu wyjścia powinno znaleźć się jedno słowo TAK lub NIE, oznaczające, czy słowo $ u $ można przekształcić w słowo $ v $, wykonując jedynie operacje zamiany.

Jeśli odpowiedź jest twierdząca oraz $ n \le 4\,000 $, Twój program powinien także wypisać przykładowy ciąg operacji prowadzących do celu. Pierwszy wiersz tego opisu powinien zawierać jedną liczbę całkowitą $ m $ ($1 \le m \le 1\,000\,000$), oznaczającą liczbę operacji. Każdy z kolejnych $ m $ wierszy powinien zawierać dwie liczby całkowite $ a_{i} $, $ b_{i} $ ($1 \le a_{i} , b_{i} \le n - 1$), oznaczające pozycje pierwszych liter zamienianych fragmentów ab (odpowiednio $ a_{i} $) i ba (odpowiednio $ b_{i} $).

Jeśli istnieje wiele możliwych rozwiązań, Twój program powinien wypisać jakiekolwiek z nich. W szczególności Twoje rozwiązanie nie musi minimalizować liczby operacji, tj. liczby $ m $.

Example

Input

6
aabbaa
baaaab

Output

TAK
2
2 4
1 5

Input 2

6
aaabbb
ababab

Output 2

NIE