#include <bits/stdc++.h>
using namespace std;
bool comparator(const pair<string, string> &a, const pair<string, string> &b)
{
if (a.second != b.second)
return a.second < b.second;
return a.first < b.first;
}
int main()
{
// prime order has alphanumeric code + lowercase metadata
// non-prime orders has alphanumeric code + space delimted list of positve integers
// considering input is given as an array of strings
vector<string> t = {"zld 93 12",
"fp kindle book",
"10a echo show",
"17g 12 25 6",
"ab1 kindle book",
"125 echo dot second generation"};
vector<pair<string, string>> prime, non_prime;
for (int i = 0; i < t.size(); i++)
{
string s = t[i];
string w = "";
vector<string> temp;
int cnt = 0;
for (int j = 0; j < s.size(); j++)
{
if (s[j] == ' ')
{
if (cnt == 0)
{
temp.push_back(w);
cnt++;
w = "";
}
else
{
w += " ";
}
}
else
{
w += s[j];
}
}
temp.push_back(w);
if (temp.size() > 1 and temp[1][0] >= 48 and temp[1][0] <= 57)
non_prime.push_back({temp[0], temp[1]});
else if (temp.size() > 1)
prime.push_back({temp[0], temp[1]});
}
sort(begin(prime), end(prime), comparator);
for (int i = 0; i < prime.size(); i++)
{
cout << prime[i].first << " " << prime[i].second << endl;
}
for (int i = 0; i < non_prime.size(); i++)
{
cout << non_prime[i].first << " " << non_prime[i].second << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmJvb2wgY29tcGFyYXRvcihjb25zdCBwYWlyPHN0cmluZywgc3RyaW5nPiAmYSwgY29uc3QgcGFpcjxzdHJpbmcsIHN0cmluZz4gJmIpCnsKICAgIGlmIChhLnNlY29uZCAhPSBiLnNlY29uZCkKICAgICAgICByZXR1cm4gYS5zZWNvbmQgPCBiLnNlY29uZDsKICAgIHJldHVybiBhLmZpcnN0IDwgYi5maXJzdDsKfQoKaW50IG1haW4oKQp7CgogICAgLy8gcHJpbWUgb3JkZXIgaGFzIGFscGhhbnVtZXJpYyBjb2RlICsgbG93ZXJjYXNlIG1ldGFkYXRhCiAgICAvLyBub24tcHJpbWUgb3JkZXJzIGhhcyBhbHBoYW51bWVyaWMgY29kZSArIHNwYWNlIGRlbGltdGVkIGxpc3Qgb2YgcG9zaXR2ZSBpbnRlZ2VycwoKICAgIC8vIGNvbnNpZGVyaW5nIGlucHV0IGlzIGdpdmVuIGFzIGFuIGFycmF5IG9mIHN0cmluZ3MKICAgIHZlY3RvcjxzdHJpbmc+IHQgPSB7InpsZCA5MyAxMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICJmcCBraW5kbGUgYm9vayIsCiAgICAgICAgICAgICAgICAgICAgICAgICIxMGEgZWNobyBzaG93IiwKICAgICAgICAgICAgICAgICAgICAgICAgIjE3ZyAxMiAyNSA2IiwKICAgICAgICAgICAgICAgICAgICAgICAgImFiMSBraW5kbGUgYm9vayIsCiAgICAgICAgICAgICAgICAgICAgICAgICIxMjUgZWNobyBkb3Qgc2Vjb25kIGdlbmVyYXRpb24ifTsKICAgIHZlY3RvcjxwYWlyPHN0cmluZywgc3RyaW5nPj4gcHJpbWUsIG5vbl9wcmltZTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IHQuc2l6ZSgpOyBpKyspCiAgICB7CiAgICAgICAgc3RyaW5nIHMgPSB0W2ldOwoKICAgICAgICBzdHJpbmcgdyA9ICIiOwogICAgICAgIHZlY3RvcjxzdHJpbmc+IHRlbXA7CgogICAgICAgIGludCBjbnQgPSAwOwogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcy5zaXplKCk7IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGlmIChzW2pdID09ICcgJykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKGNudCA9PSAwKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHRlbXAucHVzaF9iYWNrKHcpOwogICAgICAgICAgICAgICAgICAgIGNudCsrOwogICAgICAgICAgICAgICAgICAgIHcgPSAiIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB3ICs9ICIgIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHcgKz0gc1tqXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0ZW1wLnB1c2hfYmFjayh3KTsKCiAgICAgICAgaWYgKHRlbXAuc2l6ZSgpID4gMSBhbmQgdGVtcFsxXVswXSA+PSA0OCBhbmQgdGVtcFsxXVswXSA8PSA1NykKICAgICAgICAgICAgbm9uX3ByaW1lLnB1c2hfYmFjayh7dGVtcFswXSwgdGVtcFsxXX0pOwogICAgICAgIGVsc2UgaWYgKHRlbXAuc2l6ZSgpID4gMSkKICAgICAgICAgICAgcHJpbWUucHVzaF9iYWNrKHt0ZW1wWzBdLCB0ZW1wWzFdfSk7CiAgICB9CgogICAgc29ydChiZWdpbihwcmltZSksIGVuZChwcmltZSksIGNvbXBhcmF0b3IpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwcmltZS5zaXplKCk7IGkrKykKICAgIHsKICAgICAgICBjb3V0IDw8IHByaW1lW2ldLmZpcnN0IDw8ICIgIiA8PCBwcmltZVtpXS5zZWNvbmQgPDwgZW5kbDsKICAgIH0KICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbm9uX3ByaW1lLnNpemUoKTsgaSsrKQogICAgewogICAgICAgIGNvdXQgPDwgbm9uX3ByaW1lW2ldLmZpcnN0IDw8ICIgIiA8PCBub25fcHJpbWVbaV0uc2Vjb25kIDw8IGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==