#include <iostream>
using namespace std;
bool isdigit(char x) { // проверка, является ли символ числом
return (x >= '0' && x <= '9'? 1: 0);
}
bool isreal(char* x) { // сама функция синтаксического анализа
if ((!isdigit(*x))||(*x == '+' || *x == '-' && !isdigit(*++x))) return 0;
while (isdigit(*x)) ++x; // счетчик сдвигает указатель до символа, отличного от числа
if (*x == '.' && !isdigit(*++x)) return 0;
while (isdigit(*x))++x;
if ((*x == 'e' || *x == 'E')&&((*++x == '+' || *x == '-')&&(!isdigit(*++x)))) return 0;
while (isdigit(*x)) ++x;
return *x == 0; // закончилось ли число
}
int main() {
char x[1000];
int n;
cin >> n;
for (int i = 0;i < n;i++) { // сама проверка
cin >> x; // ввод игнорирует пробелы, которые по условию могут быть до и после числа
cout << (isreal(x) ? "LEGAL" : "ILLEGAL") << "\n";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmJvb2wgaXNkaWdpdChjaGFyIHgpIHsgLy8g0L/RgNC+0LLQtdGA0LrQsCwg0Y/QstC70Y/QtdGC0YHRjyDQu9C4INGB0LjQvNCy0L7QuyDRh9C40YHQu9C+0LwKICAgIHJldHVybiAoeCA+PSAnMCcgJiYgeCA8PSAnOSc/IDE6IDApOwp9CiAKYm9vbCBpc3JlYWwoY2hhciogeCkgeyAvLyDRgdCw0LzQsCDRhNGD0L3QutGG0LjRjyDRgdC40L3RgtCw0LrRgdC40YfQtdGB0LrQvtCz0L4g0LDQvdCw0LvQuNC30LAKICAgIGlmICgoIWlzZGlnaXQoKngpKXx8KCp4ID09ICcrJyB8fCAqeCA9PSAnLScgJiYgIWlzZGlnaXQoKisreCkpKSByZXR1cm4gMDsKICAgIHdoaWxlIChpc2RpZ2l0KCp4KSkgKyt4OyAvLyDRgdGH0LXRgtGH0LjQuiDRgdC00LLQuNCz0LDQtdGCINGD0LrQsNC30LDRgtC10LvRjCDQtNC+INGB0LjQvNCy0L7Qu9CwLCDQvtGC0LvQuNGH0L3QvtCz0L4g0L7RgiDRh9C40YHQu9CwCiAgICBpZiAoKnggPT0gJy4nICYmICFpc2RpZ2l0KCorK3gpKSByZXR1cm4gMDsKICAgIHdoaWxlIChpc2RpZ2l0KCp4KSkrK3g7CiAgICBpZiAoKCp4ID09ICdlJyB8fCAqeCA9PSAnRScpJiYoKCorK3ggPT0gJysnIHx8ICp4ID09ICctJykmJighaXNkaWdpdCgqKyt4KSkpKSByZXR1cm4gMDsKICAgIHdoaWxlIChpc2RpZ2l0KCp4KSkgKyt4OwogICAgcmV0dXJuICp4ID09IDA7IC8vINC30LDQutC+0L3Rh9C40LvQvtGB0Ywg0LvQuCDRh9C40YHQu9C+Cn0KIAppbnQgbWFpbigpIHsKICAgIGNoYXIgeFsxMDAwXTsKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICBmb3IgKGludCBpID0gMDtpIDwgbjtpKyspIHsgLy8g0YHQsNC80LAg0L/RgNC+0LLQtdGA0LrQsAogICAgICAgIGNpbiA+PiB4OyAvLyDQstCy0L7QtCDQuNCz0L3QvtGA0LjRgNGD0LXRgiDQv9GA0L7QsdC10LvRiywg0LrQvtGC0L7RgNGL0LUg0L/QviDRg9GB0LvQvtCy0LjRjiDQvNC+0LPRg9GCINCx0YvRgtGMINC00L4g0Lgg0L/QvtGB0LvQtSDRh9C40YHQu9CwCiAgICAgICAgY291dCA8PCAoaXNyZWFsKHgpID8gIkxFR0FMIiA6ICJJTExFR0FMIikgPDwgIlxuIjsKICAgIH0KICAgIHJldHVybiAwOwp9