#include <iostream>
#include <cstdio>
#include <map>
#include <string>
#include <cstring>
using namespace std;

const int L = 500;

map<string, int> vType, cType;
map<string, string> vInt, cInt, vStr, cStr;
bool err, end;
char buf[L], fst[L], sec[L];
int len;

void print_err(string &name, int tp){
	if(!err) return;
	if(tp == 0) printf("NOTICE: Undefined Variable %s.\n", name.c_str());
	else if(tp == 1) printf("NOTICE: Undefined Constant %s.\n", name.c_str());
	else printf("WARNING: Constant %s Already Defined!\n", name.c_str());
}

void print_var(char *nm){
	string name(nm);
	//get_str(nm, name);
	int t = vType[name];
	if(t == 1) printf("%s\n", vInt[name].c_str());
	else if(t == 2){
		string t = vStr[name];
		for(int i = 1; i + 1 < t.size(); i++) printf("%c", t[i]);
		puts("");
	}
	else{
		puts("NULL");
		print_err(name, 0);
	}
}

void print_const(char *nm){
	string name(nm);
//	get_str(nm, name);
	int t = cType[name];
	if(t == 1) printf("%s\n", cInt[name].c_str());
	else if(t == 2){
		string t = cStr[name];
		for(int i = 1; i + 1 < t.size(); i++) printf("%c", t[i]);
		puts("");
	}
	else{
		printf("%s\n", name.c_str());
		print_err(name, 1);
	}
}

void dump_var(char *nm){
	string name(nm);
//	get_str(nm, name);
	int t = vType[name];
	if(t == 1) printf("integer: %s\n", vInt[name].c_str());
	else if(t == 2) printf("string: %s\n", vStr[name].c_str());
	else{
		puts("NULL");
		print_err(name, 0);
	}
}

void dump_const(char *nm){
	string name(nm);
//	get_str(nm, name);
	int t = cType[name];
	if(t == 1) printf("integer: %s\n", cInt[name].c_str());
	else if(t == 2) printf("string: %s\n", cStr[name].c_str());
	else{
		printf("string: \"%s\"\n", name.c_str());
		print_err(name, 1);
	}
}

void print(){
	if(sec[0] == '$') print_var(sec);
	else print_const(sec);
}

void dump(){
	if(sec[0] == '$') dump_var(sec);
	else dump_const(sec);
}

void errmsg(){
	if(sec[1] == 'N') err = true;
	else err = false;
}

bool sp(char ch){
	if(ch == ' ' || ch == '\t') return true;
	return false;
}

void assign(int l1, int r1, int l2, int r2){
	while(sp(buf[l1])) l1++; while(sp(buf[l2])) l2++;
	while(sp(buf[r1])) r1--; while(sp(buf[r2])) r2--;
	string name, val;
	for(int i = l1; i <= r1; i++) name += buf[i];
	for(int i = l2; i <= r2; i++) val += buf[i];
	if(name[0] == '$'){
		vType.erase(name); vInt.erase(name); vStr.erase(name);
		if(val[0] == '"'){
			vType[name] = 2; vStr[name] = val;
		}
		else{
			vType[name] = 1; vInt[name] = val;
		}
	}
	else{
		if(cType.count(name) > 0){
			print_err(name, 2);
		}
		else{
			if(val[0] == '"'){
				cType[name] = 2; cStr[name] = val;
			}
			else{
				cType[name] = 1; cInt[name] = val;
			}	
		}
	}
}

void gao(){
	//printf("Command:  ");puts(buf);
	bool find = false;
	int i;
	for(i = 0; i < len; i++)
		if(buf[i] == '='){
			find = true; break;
		}
	if(find){
		assign(0, i - 1, i + 1, len - 1);
	}
	else{
		buf[len++] = ' '; buf[len++] = 'a'; buf[len++] = '\0';
		sscanf(buf, "%s %s", fst, sec);
		if(fst[0] == 'D') dump();
		else if(fst[0] == 'E') errmsg();
		else if(fst[1] == 'a'){
			puts("Script was KILLED.");
			end = true;
		}
		else print();
	}
}

bool blankline(){
	for(int i = 0; i < len; i++) 
		if(!sp(buf[i])) return false;
	return true;
}

void clear(){
	vType.clear(); cType.clear();
	vInt.clear(); cInt.clear();
	vStr.clear(); cStr.clear();
}

int main(){
	int cs;
	scanf("%d", &cs);
	for(int c = 0; c < cs; c++){
		if(c > 0) puts("");
		clear();
		int n;
		scanf("%d\n", &n);
		end = false;
		err = true;
		while(n--){
			gets(buf);
			len = strlen(buf);
			if(end || blankline()) continue;
			gao();
		}
	}
	return 0;
}

