#include "bits/stdc++.h"
using namespace std;
class Random {
public :
Random( ) = default ;
Random( std:: mt19937 :: result_type seed) : eng( seed) { }
long long DrawNumber( long long min, long long max) ;
private :
std:: mt19937 eng{ std:: random_device { } ( ) } ;
} ;
long long Random:: DrawNumber ( long long min, long long max) {
if ( max < min) return 0 ;
return std:: uniform_int_distribution < long long > { min, max} ( eng) ;
}
Random rnd( 0 ) ;
void generate( ) {
ofstream cout ( "test.in" ) ;
int n = rnd.DrawNumber ( 1 , 4 ) ;
while ( n-- ) { cout << "AB" [ rnd.DrawNumber ( 0 , 1 ) ] ; }
cout << endl;
cout .close ( ) ;
}
int main( ) {
system ( "g++ -lm -O3 -std=c++17 -DLOCAL -pipe -o /wa.exe ./main.cpp" ) ;
system ( "g++ -lm -O3 -std=c++17 -pipe -o /ac.exe ./ac.cpp" ) ;
// system("javac Main.java");
int tc = 1 ;
while ( 1 ) {
cerr << "Case " << tc++ << " " ;
generate( ) ;
clock_t bef= clock ( ) ;
system ( "ac.exe <test.in >ac.txt" ) ;
clock_t bet= clock ( ) ;
cerr << ( bet- bef- 0.0 ) / CLOCKS_PER_SEC << " " ;
if ( system ( "wa.exe <test.in >wa.txt" ) ) break ;
clock_t aft= clock ( ) ;
cerr << ( aft- bet- 0.0 ) / CLOCKS_PER_SEC << endl;
//if (system("java Main <test.in >wa.txt"))break;
// cerr << tc++ << endl;
ifstream acs( "ac.txt" ) ;
ifstream was( "wa.txt" ) ;
string ac, wa;
getline( was, wa, ( char ) EOF ) ;
getline( acs, ac, ( char ) EOF ) ;
was.close ( ) ;
acs.close ( ) ;
// cout << ac << endl;
// cout << wa << endl;
//if (ac !="YES\n")
if ( ac ! = wa)
break ;
}
}
I2luY2x1ZGUgImJpdHMvc3RkYysrLmgiCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgUmFuZG9tIHsKcHVibGljOgogICAgUmFuZG9tKCkgPSBkZWZhdWx0OwoKICAgIFJhbmRvbShzdGQ6Om10MTk5Mzc6OnJlc3VsdF90eXBlIHNlZWQpIDogZW5nKHNlZWQpIHt9CgogICAgbG9uZyBsb25nIERyYXdOdW1iZXIobG9uZyBsb25nIG1pbiwgbG9uZyBsb25nIG1heCk7Cgpwcml2YXRlOgogICAgc3RkOjptdDE5OTM3IGVuZ3tzdGQ6OnJhbmRvbV9kZXZpY2V7fSgpfTsKfTsKCmxvbmcgbG9uZyBSYW5kb206OkRyYXdOdW1iZXIobG9uZyBsb25nIG1pbiwgbG9uZyBsb25nIG1heCkgewogICAgaWYgKG1heCA8IG1pbilyZXR1cm4gMDsKICAgIHJldHVybiBzdGQ6OnVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxsb25nIGxvbmc+e21pbiwgbWF4fShlbmcpOwp9CgoKUmFuZG9tIHJuZCgwKTsKCnZvaWQgZ2VuZXJhdGUoKSB7CiAgICBvZnN0cmVhbSBjb3V0KCJ0ZXN0LmluIik7CiAgICBpbnQgbiA9IHJuZC5EcmF3TnVtYmVyKDEsIDQpOwogICAgd2hpbGUgKG4tLSkge2NvdXQ8PCJBQiJbcm5kLkRyYXdOdW1iZXIoMCwgMSldO30KICAgIGNvdXQgPDwgZW5kbDsKICAgIGNvdXQuY2xvc2UoKTsKfQppbnQgbWFpbigpIHsKICAgIHN5c3RlbSgiZysrIC1sbSAtTzMgLXN0ZD1jKysxNyAtRExPQ0FMIC1waXBlIC1vIC93YS5leGUgLi9tYWluLmNwcCIpOwogICAgc3lzdGVtKCJnKysgLWxtIC1PMyAtc3RkPWMrKzE3IC1waXBlIC1vIC9hYy5leGUgLi9hYy5jcHAiKTsKICAgIC8vIHN5c3RlbSgiamF2YWMgTWFpbi5qYXZhIik7CiAgICBpbnQgdGMgPSAxOwogICAgd2hpbGUgKDEpIHsKICAgICAgICBjZXJyIDw8ICJDYXNlICIgPDwgdGMrKyA8PCAiICI7CiAgICAgICAgZ2VuZXJhdGUoKTsKICAgICAgICBjbG9ja190IGJlZj1jbG9jaygpOwogICAgICAgIHN5c3RlbSgiYWMuZXhlIDx0ZXN0LmluID5hYy50eHQiKTsKICAgICAgICBjbG9ja190IGJldD1jbG9jaygpOwogICAgICAgIGNlcnI8PChiZXQtYmVmLTAuMCkvQ0xPQ0tTX1BFUl9TRUM8PCIgIjsKICAgICAgICBpZiAoc3lzdGVtKCJ3YS5leGUgPHRlc3QuaW4gPndhLnR4dCIpKWJyZWFrOwogICAgICAgIGNsb2NrX3QgYWZ0PWNsb2NrKCk7CiAgICAgICAgY2Vycjw8KGFmdC1iZXQtMC4wKS9DTE9DS1NfUEVSX1NFQzw8ZW5kbDsKCiAgICAgICAgLy9pZiAoc3lzdGVtKCJqYXZhIE1haW4gPHRlc3QuaW4gPndhLnR4dCIpKWJyZWFrOwoKICAgICAgICAvLyAgY2VyciA8PCB0YysrIDw8IGVuZGw7CiAgICAgICAgaWZzdHJlYW0gYWNzKCJhYy50eHQiKTsKICAgICAgICBpZnN0cmVhbSB3YXMoIndhLnR4dCIpOwoKICAgICAgICBzdHJpbmcgYWMsIHdhOwogICAgICAgIGdldGxpbmUod2FzLCB3YSwgKGNoYXIpIEVPRik7CgogICAgICAgIGdldGxpbmUoYWNzLCBhYywgKGNoYXIpIEVPRik7CiAgICAgICAgd2FzLmNsb3NlKCk7CgogICAgICAgIGFjcy5jbG9zZSgpOwoKICAgICAgICAvLwkJY291dCA8PCBhYyA8PCBlbmRsOwogICAgICAgIC8vCQljb3V0IDw8IHdhIDw8IGVuZGw7CiAgICAgICAgLy9pZiAoYWMgIT0iWUVTXG4iKQogICAgICAgIGlmIChhYyAhPSB3YSkKICAgICAgICAgICAgYnJlYWs7CiAgICB9Cn0K