#include <iostream>
#include <cstdlib>

using namespace std;

const char *name[] = {
	"NUM", "VARX", "VARY", "ADD", "SUB", "MUL", "DIV", "EXPO", 
	"LPAR", "RPAR", "SEMI", "BAD"
};

enum {
	NUM, VARX, VARY, ADD, SUB, MUL, DIV, EXPO, LPAR, RPAR, SEMI, BAD
};

int tok;	// ultimo token leido
int num;	// ultimo numero leido

void error(const char mesg[])
{
	std::cerr << "ERROR - " << mesg << std::endl;
	exit(EXIT_FAILURE);
}

int gettok(void)
{
	std::cin >> std::ws;	// se come los blancos
	int ch= std::cin.get();
	if (isdigit(ch)) {
		num= 0;
		do {
			num= 10*num + (ch-'0');
			ch= std::cin.get();
		} while (isdigit(ch));
		std::cin.putback(ch);
		tok= NUM;
	}
	else
	switch (ch) {
		case 'x':
		case 'X':	tok= VARX;
				break;
		case 'y':
		case 'Y':	tok= VARY;
				break;
		case '+':	tok= ADD;
				break;
		case '-':	tok= SUB;
				break;
		case '*':	tok= MUL;
				break;
		case '/':	tok= DIV;
				break;
		case '^':	tok= EXPO;
				break;
		case '(':	tok= LPAR;
				break;
		case ')':	tok= RPAR;
				break;
		case ';':	tok= SEMI;
				break;
		case EOF:	tok= SEMI;
				break;
		default:	tok= BAD;
				break;
	}
	return tok;
}

int main(int argc, char** argv) 
{
	do {
		gettok();
		std::cout << name[tok] << std::endl;
	} while (tok!=SEMI);
	return EXIT_SUCCESS;
}
