#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
string to_words(unsigned long long value) {
static unordered_map<unsigned long long, const char *> number_to_words = {
{0, "zero" }, {1, "jeden" }, {2, "dwa"}, {3, "trzy"}, {4, "cztery"}, {5, "piec"},
{6, "szesc"}, {7, "siedem"}, {8, "osiem"}, {9, "dziewiec"}, {10, "dziesiec"},
{11, "jedenascie"}, {12, "dwanascie"}, {13, "trzynascie"}, {14, "czternascie"},
{15, "pietnascie"}, {16, "szesnascie"}, {17, "siedemnascie"}, {18, "osiemnascie"},
{19, "dziewietnascie"}, {20, "dwadziescia"}, {30, "trzydziesci"}, {40, "czterdziesci"},
{50, "piecdziesiat"}, {60, "szescdziesiat"}, {70, "siedemdziesiat"}, {80, "osiemdziesiat"},
{90, "dziewiecdziesiat"}, {100, "sto"}, {200, "dwiescie"}, {300, "trzysta"}, {400, "czterysta"},
{500, "piecset"}, {600, "szescset"}, {700, "siedemset"}, {800, "osiemset"}, {900, "dziewiecset"}
};
auto it = number_to_words.find(value);
if (it != number_to_words.end())
{
return it->second;
} if (((value) > 20) && (value < 100))
{
return to_words(value / 10 * 10) + " " + to_words(value % 10);
} if ((value > 100) && (value < 1000))
{
return to_words(value / 100 * 100) + " " + to_words(value % 100);
}
return "Error";
}
int main() {
int t;
cin >> t;
while (t)
{
unsigned long long n;
cin >> n;
int counter = 0;
string slowo = "";
while (n > 0)
{
int x = n % 10;
n /= 10;
counter++;
if (n > 0)
{
x = x + (n%10) * 10;
n /= 10;
counter++;
}
if (n > 0)
{
x = x + (n%10) * 100;
n /= 10;
counter++;
}
if (counter > 3 && counter < 7)
slowo.insert(0, " tys. ");
if(counter > 6 && counter < 10)
slowo.insert(0, " mln. ");
if(counter > 9 && counter < 13)
slowo.insert(0, " mld. ");
if(counter > 12 && counter < 16)
slowo.insert(0, " bln. ");
slowo.insert(0, to_words(x));
}
cout << slowo;
t--;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RyaW5nIHRvX3dvcmRzKHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSkgewogICAgc3RhdGljIHVub3JkZXJlZF9tYXA8dW5zaWduZWQgbG9uZyBsb25nLCBjb25zdCBjaGFyICo+IG51bWJlcl90b193b3JkcyA9IHsKICAgICAgICB7MCwgInplcm8iIH0sIHsxLCAiamVkZW4iIH0sIHsyLCAiZHdhIn0sIHszLCAidHJ6eSJ9LCB7NCwgImN6dGVyeSJ9LCB7NSwgInBpZWMifSwKICAgICAgICB7NiwgInN6ZXNjIn0sIHs3LCAic2llZGVtIn0sIHs4LCAib3NpZW0ifSwgezksICJkemlld2llYyJ9LCB7MTAsICJkemllc2llYyJ9LAogICAgICAgIHsxMSwgImplZGVuYXNjaWUifSwgezEyLCAiZHdhbmFzY2llIn0sIHsxMywgInRyenluYXNjaWUifSwgezE0LCAiY3p0ZXJuYXNjaWUifSwKICAgICAgICB7MTUsICJwaWV0bmFzY2llIn0sIHsxNiwgInN6ZXNuYXNjaWUifSwgezE3LCAic2llZGVtbmFzY2llIn0sIHsxOCwgIm9zaWVtbmFzY2llIn0sCiAgICAgICAgezE5LCAiZHppZXdpZXRuYXNjaWUifSwgezIwLCAiZHdhZHppZXNjaWEifSwgezMwLCAidHJ6eWR6aWVzY2kifSwgezQwLCAiY3p0ZXJkemllc2NpIn0sCiAgICAgICAgezUwLCAicGllY2R6aWVzaWF0In0sIHs2MCwgInN6ZXNjZHppZXNpYXQifSwgezcwLCAic2llZGVtZHppZXNpYXQifSwgezgwLCAib3NpZW1kemllc2lhdCJ9LAogICAgICAgIHs5MCwgImR6aWV3aWVjZHppZXNpYXQifSwgezEwMCwgInN0byJ9LCB7MjAwLCAiZHdpZXNjaWUifSwgezMwMCwgInRyenlzdGEifSwgezQwMCwgImN6dGVyeXN0YSJ9LAogICAgICAgIHs1MDAsICJwaWVjc2V0In0sIHs2MDAsICJzemVzY3NldCJ9LCB7NzAwLCAic2llZGVtc2V0In0sIHs4MDAsICJvc2llbXNldCJ9LCB7OTAwLCAiZHppZXdpZWNzZXQifQogICAgfTsKICAgIGF1dG8gaXQgPSBudW1iZXJfdG9fd29yZHMuZmluZCh2YWx1ZSk7CiAgICBpZiAoaXQgIT0gbnVtYmVyX3RvX3dvcmRzLmVuZCgpKQogICAgewogICAgICAgIHJldHVybiBpdC0+c2Vjb25kOwogICAgfSBpZiAoKCh2YWx1ZSkgPiAyMCkgJiYgKHZhbHVlIDwgMTAwKSkKICAgIHsKICAgICAgICByZXR1cm4gdG9fd29yZHModmFsdWUgLyAxMCAqIDEwKSArICIgIiArIHRvX3dvcmRzKHZhbHVlICUgMTApOwogICAgfSBpZiAoKHZhbHVlID4gMTAwKSAmJiAodmFsdWUgPCAxMDAwKSkKICAgIHsKICAgICAgICByZXR1cm4gdG9fd29yZHModmFsdWUgLyAxMDAgKiAxMDApICsgIiAiICsgdG9fd29yZHModmFsdWUgJSAxMDApOwogICAgfQogICAgcmV0dXJuICJFcnJvciI7Cn0KIAppbnQgbWFpbigpIHsKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodCkKICAgIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbjsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICBpbnQgY291bnRlciA9IDA7CiAgICAgICAgc3RyaW5nIHNsb3dvID0gIiI7CiAgICAgICAgd2hpbGUgKG4gPiAwKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHggPSBuICUgMTA7CiAgICAgICAgICAgIG4gLz0gMTA7CiAgICAgICAgICAgIGNvdW50ZXIrKzsKICAgICAgICAgICAgaWYgKG4gPiAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB4ID0geCArIChuJTEwKSAqIDEwOwogICAgICAgICAgICAgICAgbiAvPSAxMDsKICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobiA+IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHggPSB4ICsgKG4lMTApICogMTAwOwogICAgICAgICAgICAgICAgbiAvPSAxMDsKICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoY291bnRlciA+IDMgJiYgY291bnRlciA8IDcpCiAgICAgICAgICAgICAgICBzbG93by5pbnNlcnQoMCwgIiB0eXMuICIpOwogICAgICAgICAgICBpZihjb3VudGVyID4gNiAmJiBjb3VudGVyIDwgMTApCiAgICAgICAgICAgICAgICBzbG93by5pbnNlcnQoMCwgIiBtbG4uICIpOwogICAgICAgICAgICBpZihjb3VudGVyID4gOSAmJiBjb3VudGVyIDwgMTMpCiAgICAgICAgICAgICAgICBzbG93by5pbnNlcnQoMCwgIiBtbGQuICIpOwogICAgICAgICAgICBpZihjb3VudGVyID4gMTIgJiYgY291bnRlciA8IDE2KQogICAgICAgICAgICAgICAgc2xvd28uaW5zZXJ0KDAsICIgYmxuLiAiKTsKICAgICAgICAgICAgc2xvd28uaW5zZXJ0KDAsIHRvX3dvcmRzKHgpKTsKICAgICAgICB9CiAgICAgICAgY291dCA8PCBzbG93bzsKICAgICAgICB0LS07CiAgICB9Cn0=