/*
Amirul Islam (shiningflash)
toph :: Palindrome Again
*/
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define mx 1000005
const string a[ ] = { "zero" , "one" , "two" , "three" , "four" , "five" ,
"six" , "seven" , "eight" , "nine" , "ten" } ;
const string b[ ] = { "zero" , "one" , "two" , "three" , "four" , "five" ,
"six" , "seven" , "eight" , "nine" , "ten" , "eleven" ,
"twelve" , "thirteen" , "fourteen" , "fifteen" ,
"sixteen" , "seventeen" , "eighteen" , "nineteen" } ;
const string c[ ] = { "ANYTHING" , "ANYTHING" , "twenty" , "thirty" , "forty" ,
"fifty" , "sixty" , "seventy" , "eighty" , "ninety" } ;
int wordToInt( string s) {
int n = 0 ;
string word;
vector < string> vec;
stringstream ss( s) ;
while ( ss >> word) vec.push_back ( word) ;
for ( int i = 0 ; i < vec.size ( ) ; i++ ) {
if ( vec[ i] == "thousand" ) {
for ( int j = 0 ; j <= 10 ; j++ ) {
if ( vec[ i- 1 ] == a[ j] ) {
n + = ( j * 1000 ) ;
break ;
}
}
}
}
for ( int i = 0 ; i < vec.size ( ) ; i++ ) {
if ( vec[ i] == "hundred" ) {
for ( int j = 0 ; j <= 10 ; j++ ) {
if ( vec[ i- 1 ] == a[ j] ) {
n + = ( j * 100 ) ;
break ;
}
}
}
}
for ( int i = 0 ; i < vec.size ( ) ; i++ ) {
for ( int j = 0 ; j <= 9 ; j++ ) {
if ( vec[ i] == c[ j] ) {
n + = ( j * 10 ) ;
break ;
}
}
}
for ( int i = 0 ; i <= 19 ; i++ ) {
if ( vec[ vec.size ( ) - 1 ] == b[ i] ) {
n + = i;
break ;
}
}
return n;
}
void solution( int n) {
int binary[ 32 ] ;
int pos = 0 ;
while ( n > 0 ) {
binary[ pos++ ] = n % 2 ;
n / = 2 ;
}
for ( int i = pos- 1 ; i >= 0 ; i-- ) cout << binary[ i] ; cout << endl; // check 3
bool f = true ;
for ( int i = 0 , j = pos- 1 ; j > i; i++ , j-- ) {
if ( binary[ i] ! = binary[ j] ) {
f = false ;
break ;
}
}
cout << ( f ? "YES\n " : "NO\n " ) ;
}
int main( ) {
//freopen("in", "r", stdin);
//ios_base::sync_with_stdio(0);
//cin.tie(NULL);
int t;
string s;
cin >> t;
cin .ignore ( ) ;
while ( t-- ) {
getline( cin , s) ;
int n = wordToInt( s) ;
cout << endl << s << endl; // check 1
cout << n << " " ; // check 2
solution( n) ;
}
return 0 ;
}
LyoKCUFtaXJ1bCBJc2xhbSAoc2hpbmluZ2ZsYXNoKQoJdG9waCA6OiBQYWxpbmRyb21lIEFnYWluCiovCgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBteCAxMDAwMDA1Cgpjb25zdCBzdHJpbmcgYVtdID0geyJ6ZXJvIiwgIm9uZSIsICJ0d28iLCAidGhyZWUiLCAiZm91ciIsICJmaXZlIiwKCQkJCSAgInNpeCIsICJzZXZlbiIsICJlaWdodCIsICJuaW5lIiwgInRlbiJ9OwoKY29uc3Qgc3RyaW5nIGJbXSA9IHsiemVybyIsICJvbmUiLCAidHdvIiwgInRocmVlIiwgImZvdXIiLCAiZml2ZSIsCiAgICAgICAgICAgICAgICAgICJzaXgiLCAic2V2ZW4iLCAiZWlnaHQiLCAibmluZSIsICJ0ZW4iLCAiZWxldmVuIiwKICAgICAgICAgICAgICAgICAgInR3ZWx2ZSIsICJ0aGlydGVlbiIsICJmb3VydGVlbiIsICJmaWZ0ZWVuIiwKICAgICAgICAgICAgICAgICAgInNpeHRlZW4iLCAic2V2ZW50ZWVuIiwgImVpZ2h0ZWVuIiwgIm5pbmV0ZWVuIn07Cgpjb25zdCBzdHJpbmcgY1tdID0geyJBTllUSElORyIsICJBTllUSElORyIsICJ0d2VudHkiLCAidGhpcnR5IiwgImZvcnR5IiwgCgkJCQkgICJmaWZ0eSIsICJzaXh0eSIsICJzZXZlbnR5IiwgImVpZ2h0eSIsICJuaW5ldHkifTsKCmludCB3b3JkVG9JbnQoc3RyaW5nIHMpIHsKICAgIGludCBuID0gMDsKICAgIHN0cmluZyB3b3JkOwogICAgdmVjdG9yIDxzdHJpbmc+IHZlYzsKICAgIHN0cmluZ3N0cmVhbSBzcyhzKTsKICAgIHdoaWxlIChzcyA+PiB3b3JkKSB2ZWMucHVzaF9iYWNrKHdvcmQpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmVjLnNpemUoKTsgaSsrKSB7CiAgICAgIGlmICh2ZWNbaV0gPT0gInRob3VzYW5kIikgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDw9IDEwOyBqKyspIHsKICAgICAgICAgIGlmICh2ZWNbaS0xXSA9PSBhW2pdKSB7CiAgICAgICAgICAgIG4gKz0gKGogKiAxMDAwKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHZlYy5zaXplKCk7IGkrKykgewogICAgICBpZiAodmVjW2ldID09ICJodW5kcmVkIikgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDw9IDEwOyBqKyspIHsKICAgICAgICAgIGlmICh2ZWNbaS0xXSA9PSBhW2pdKSB7CiAgICAgICAgICAgIG4gKz0gKGogKiAxMDApOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmVjLnNpemUoKTsgaSsrKSB7CiAgICAgIGZvciAoaW50IGogPSAwOyBqIDw9IDk7IGorKykgewogICAgICAgIGlmICh2ZWNbaV0gPT0gY1tqXSkgewogICAgICAgICAgbiArPSAoaiAqIDEwKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gMTk7IGkrKykgewogICAgICBpZiAodmVjW3ZlYy5zaXplKCktMV0gPT0gYltpXSkgewogICAgICAgIG4gKz0gaTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogICAgcmV0dXJuIG47Cn0KCnZvaWQgc29sdXRpb24oaW50IG4pIHsKICAgIGludCBiaW5hcnlbMzJdOwogICAgaW50IHBvcyA9IDA7CiAgICB3aGlsZSAobiA+IDApIHsKICAgICAgYmluYXJ5W3BvcysrXSA9IG4gJSAyOwogICAgICBuIC89IDI7CiAgICB9CiAgICBmb3IgKGludCBpID0gcG9zLTE7IGkgPj0gMDsgaS0tKSBjb3V0IDw8IGJpbmFyeVtpXTsgY291dCA8PCBlbmRsOyAvLyBjaGVjayAzCiAgICAKICAgIGJvb2wgZiA9IHRydWU7CiAgICBmb3IgKGludCBpID0gMCwgaiA9IHBvcy0xOyBqID4gaTsgaSsrLCBqLS0pIHsKICAgICAgaWYgKGJpbmFyeVtpXSAhPSBiaW5hcnlbal0pIHsKICAgICAgICBmID0gZmFsc2U7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgKGYgPyAiWUVTXG4iIDogIk5PXG4iKTsKfQoKaW50IG1haW4oKSB7CiAgICAvL2ZyZW9wZW4oImluIiwgInIiLCBzdGRpbik7CiAgICAvL2lvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICAvL2Npbi50aWUoTlVMTCk7CiAgICAKICAgIGludCB0OwogICAgc3RyaW5nIHM7CiAgICBjaW4gPj4gdDsKICAgIGNpbi5pZ25vcmUoKTsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBnZXRsaW5lKGNpbiwgcyk7CiAgICAgICAgaW50IG4gPSB3b3JkVG9JbnQocyk7CiAgICAgICAgY291dCA8PCBlbmRsIDw8IHMgPDwgZW5kbDsgLy8gY2hlY2sgMQogICAgICAgIGNvdXQgPDwgbiA8PCAiICI7IC8vIGNoZWNrIDIKICAgICAgICBzb2x1dGlvbihuKTsKICAgIH0KICAgIHJldHVybiAwOwp9