#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;

#pragma warning(push)
#pragma warning(disable: 4996)

int n;

string sir;
string primulCuv, alDoileaCuv, alTreileaCuv;
vector<string> sirDelimitat;

bool is_number(const std::string& s)
{
	std::string::const_iterator it = s.begin();
	while (it != s.end() && isdigit(*it)) ++it;
	return !s.empty() && it == s.end();
}

string stringToUpper(string s)
{
	for (unsigned int l = 0; l < s.length(); l++)
	{
		s[l] = toupper(s[l]);
	}

	return s;
}

unsigned int split(const std::string &txt, vector<std::string> &strs, char ch)
{
	unsigned int pos = txt.find(ch);
	unsigned int initialPos = 0;
	strs.clear();

	// Decompose statement
	while (pos != std::string::npos) {
		strs.push_back(txt.substr(initialPos, pos - initialPos));
		initialPos = pos + 1;

		pos = txt.find(ch, initialPos);
	}

	// Add the last one
	strs.push_back(txt.substr(initialPos, min(pos, txt.size()) - initialPos + 1));

	return strs.size();
}

bool contains_number(const std::string c)
{
	return (c.find_first_of("0123456789") != std::string::npos);
}

int main()
{
	//freopen("test.in", "r", stdin);
	//freopen("test.out", "w", stdout);
	
	getline(cin, sir);
	n = stoi(sir);

	for (int i = 0; i < n; ++i)
	{
		getline(cin, sir);

		sirDelimitat.clear();

		split(sir, sirDelimitat, ' ');

		if (sirDelimitat.size() != 3)
		{
			cout << "Incorrect!" << endl;
			continue;
		}

		primulCuv = sirDelimitat[0];
		alDoileaCuv = sirDelimitat[1];
		alTreileaCuv = sirDelimitat[2];

		if (!(primulCuv == "B" || 
			(primulCuv.length() == 2 && primulCuv[0] >= 'A' && primulCuv[0] <= 'Z' && primulCuv[1] >= 'A' && primulCuv[1] <= 'Z')))
		{
			cout << "Incorrect!" << endl;
			continue;
		}

		if (!is_number(alDoileaCuv))
		{
			cout << "Incorrect!" << endl;
			continue;
		}

		if (primulCuv == "B" && (alDoileaCuv.length() < 2 || alDoileaCuv.length() > 3))
		{
			cout << "Incorrect!" << endl;
			continue;
		}
		
		if (primulCuv != "B" && alDoileaCuv.length() != 2)
		{
			cout << "Incorrect!" << endl;
			continue;
		}

		if (contains_number(alTreileaCuv))
		{
			cout << "Incorrect!" << endl;
			continue;
		}

		if (alTreileaCuv.length() != 3 || (stringToUpper(alTreileaCuv) != alTreileaCuv))
		{
			cout << "Incorrect!" << endl;
			continue;
		}

		cout << "Correct!" << endl;
	}

	

	return 0;
}

#pragma warning(pop)