//Code by Patcas Csaba #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define LL long long #define PII pair #define VB vector #define VI vector #define VD vector #define VS vector #define VPII vector > #define VVI vector < VI > #define VVB vector < VB > #define FORN(i, n) for(int i = 0; i < (n); ++i) #define FOR(i, a, b) for(int i = (a); i <= (b); ++i) #define FORD(i, a, b) for(int i = (a); i >= (b); --i) #define REPEAT do{ #define UNTIL(x) }while(!(x)); #define SZ size() #define BG begin() #define EN end() #define CL clear() #define X first #define Y second #define RS resize #define PB push_back #define MP make_pair #define ALL(x) x.begin(), x.end() #define IN_FILE "a.in" #define OUT_FILE "a.out" int n; VS plates; bool isOK(string s) { VS groups(4); stringstream ss(s); ss >> groups[1] >> groups[2] >> groups[3]; if (groups[1] != "B" && groups[1].SZ != 2) return false; if (groups[1] != "B" && (!isupper(groups[1][0]) || !isupper(groups[1][1]))) return false; if ((groups[1] == "B" && (groups[2].SZ != 2 && groups[2].SZ != 3)) || (groups[1] != "B" && groups[2].SZ != 2)) return false; FORN(i, groups[2].SZ) if (!isdigit(groups[2][i])) return false; if (groups[3].SZ != 3) return false; FORN(i, 3) if (!isupper(groups[3][i])) return false; return true; } int main() { //Read data //freopen(IN_FILE, "r", stdin); //freopen(OUT_FILE, "w", stdout); cin >> n; plates.RS(n + 1); getline(cin, plates[0]); FOR(i, 1, n) { getline(cin, plates[i]); } FOR (i, 1, n) if (isOK(plates[i])) { cout << "Correct!" << endl; } else { cout << "Incorrect!" << endl; } return 0; }