#include <algorithm>
#include <iostream>
#include <map>
using namespace std;
void PrzydzielenieSkrotowDoRozmiaru(int rozmiar) {
if(rozmiar <= 6 && rozmiar >= 4)
cout << "tys. ";
else if (rozmiar <= 9 && rozmiar >= 7)
cout << "mln. ";
else if (rozmiar <= 12 && rozmiar >= 10)
cout << "mld. ";
else if (rozmiar == 13)
cout << "bln. ";
}
int main() {
map <char,string> setki;
map <char,string> dziesiatki;
map <char,string> nascie;
map <char,string> jednosci;
jednosci['0']="";
jednosci['1']="jeden";
jednosci['2']="dwa";
jednosci['3']="trzy";
jednosci['4']="cztery";
jednosci['5']="piec";
jednosci['6']="szesc";
jednosci['7']="siedem";
jednosci['8']="osiem";
jednosci['9']="dziewiec";
nascie['0']="dziesiec";
nascie['1']="jedenascie";
nascie['2']="dwanascie";
nascie['3']="trzynascie";
nascie['4']="czternascie";
nascie['5']="pietnascie";
nascie['6']="szesnascie";
nascie['7']="siedemnascie";
nascie['8']="osiemnascie";
nascie['9']="dziewietnascie";
dziesiatki['2']="dwadziescia";
dziesiatki['3']="trzydziesci";
dziesiatki['4']="czterdziesci";
dziesiatki['5']="piecdziesiat";
dziesiatki['6']="szescdziesiat";
dziesiatki['7']="siedemdziesiat";
dziesiatki['8']="osiemdziesiat";
dziesiatki['9']="dziewiecdziesiat";
setki['1']="sto";
setki['2']="dwiescie";
setki['3']="trzysta";
setki['4']="czterysta";
setki['5']="piecset";
setki['6']="szescset";
setki['7']="siedemset";
setki['8']="osiemset";
setki['9']="dziewiecset";
unsigned short liczbaTestow;
string liczba;
short rozmiar;
short rzadWielkosciDlaGrupy;
cin >> liczbaTestow;
while(liczbaTestow--) {
cin >> liczba;
rozmiar = liczba.length();
do {
rzadWielkosciDlaGrupy = rozmiar % 3;
if (liczba == "100000")
{
cout << "sto tys. ";
break;
}
else if(liczba[0] == '0') {
liczba.erase(liczba.begin());
rozmiar--;
} else {
switch(rzadWielkosciDlaGrupy) {
case 0:
cout << setki.find(liczba[0])->second << " ";
break;
case 2:
if(liczba[0] == '1') {
cout << nascie.find(liczba[1])->second << " ";
PrzydzielenieSkrotowDoRozmiaru(rozmiar);
rozmiar--;
liczba.erase(liczba.begin());
} else
cout << dziesiatki.find(liczba[0]) -> second << " ";
break;
case 1:
cout << jednosci.find(liczba[0]) -> second << " ";
PrzydzielenieSkrotowDoRozmiaru(rozmiar);
break;
}
rozmiar--;
liczba.erase(liczba.begin());
}
} while (rozmiar > 0);
cout << endl;
}
return 0;
}