#include <iostream>
#include <string.h>
using namespace std;
int primes[1000];
int count=0;
void generateSieve(){
bool arr[1000];
memset(arr,1,sizeof(arr));
for(int i=4;i<1000;i+=2)
arr[i] = 0;
for(int i=3;i<1000;i+=2){
for(int j=i*2;j<1000;j+=i)
arr[j] = 0;
}
for(int i=2;i<1000;i++){
if(arr[i]==1){
primes[count]=i;
count++;
}
}
}
int main() {
generateSieve();
int T,x,temp,temp2,temp3,arr[10]={0},arr2[10]={0},arr3[3]={0};;
string num;
bool prime;
cin>>T;
for(int i=0;i<T;i++){
cin>>num;
prime = false;
for(int j=0;j<num.length();j++)
arr[(int)num[j]-48]++;
for(int j=0;j<10;j++)
cout<<arr[j]<<" ";
cout<<endl;
for(int j=count-1;count>=0;j--){
x=primes[j];
if(x==0)
break;
for(int k=0;k<3;k++){cout<<x<<" "<<arr[x%10]<<endl;
if(arr[x%10]>0){
//save value states
if(k==0){
temp=x%10;
arr2[temp] = arr[temp];
}
if(k==1){
temp2=x%10;
if(arr2[temp2] == 0)
arr2[temp2] = arr[temp2];
}
if(k==2){
temp3=x%10;
if(arr2[temp3] == 0)
arr2[temp3] = arr[temp3];
}
arr3[k] = x%10;
arr[x%10]--;
}
else {
if(k==1)
arr[temp] = arr2[temp];
if(k==2){
arr[temp] = arr2[temp];
arr[temp2] = arr2[temp2];
}
break;
}
x/=10;
if(x==0){
if(k==0)
arr[temp] = arr2[temp];
if(k==1){
arr[temp] = arr2[temp];
arr[temp2] = arr2[temp2];
}
if(k==2){
arr[temp] = arr2[temp];
arr[temp2] = arr2[temp2];
arr[temp3] = arr2[temp3];
}
temp = -10;
temp2=-5;
temp3=-1;
//check the order of number in string
for(int l=0;l<num.length();l++){
if((int)num[l]-48 == arr3[2] && temp3==-1)
temp3 = l;
else if((int)num[l]-48 == arr3[1] && temp2<temp3)
temp2 = l;
else if((int)num[l]-48 == arr3[0])
temp = l;cout<<temp3<<" "<<temp2<<" "<<temp<<endl;
}
if(k==0){
prime = true;
break;
}
if(k==1){
if(temp2<temp){
prime = true;
break;
}
}
if(k==2){
if(temp3 < temp2 && temp2 < temp){
prime = true;
break;
}
}
break;
}
}
memset(arr2,0,sizeof(arr2));
if(prime){
cout<<primes[j]<<endl;
break;
}
}
if(!prime)
cout<<"-1"<<endl;
memset(arr,0,sizeof(arr));
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgcHJpbWVzWzEwMDBdOwppbnQgY291bnQ9MDsKCnZvaWQgZ2VuZXJhdGVTaWV2ZSgpewoJYm9vbCBhcnJbMTAwMF07CgltZW1zZXQoYXJyLDEsc2l6ZW9mKGFycikpOwoJZm9yKGludCBpPTQ7aTwxMDAwO2krPTIpCgkJYXJyW2ldID0gMDsKCWZvcihpbnQgaT0zO2k8MTAwMDtpKz0yKXsKCQlmb3IoaW50IGo9aSoyO2o8MTAwMDtqKz1pKQoJCQlhcnJbal0gPSAwOwoJfQoJZm9yKGludCBpPTI7aTwxMDAwO2krKyl7CgkJaWYoYXJyW2ldPT0xKXsKCQkJcHJpbWVzW2NvdW50XT1pOwoJCQljb3VudCsrOwoJCX0JCgl9Cn0JCgppbnQgbWFpbigpIHsKCWdlbmVyYXRlU2lldmUoKTsKCWludCBULHgsdGVtcCx0ZW1wMix0ZW1wMyxhcnJbMTBdPXswfSxhcnIyWzEwXT17MH0sYXJyM1szXT17MH07OwoJc3RyaW5nIG51bTsKCWJvb2wgcHJpbWU7CgljaW4+PlQ7Cglmb3IoaW50IGk9MDtpPFQ7aSsrKXsKCQljaW4+Pm51bTsKCQlwcmltZSA9IGZhbHNlOwoJCWZvcihpbnQgaj0wO2o8bnVtLmxlbmd0aCgpO2orKykKCQkJYXJyWyhpbnQpbnVtW2pdLTQ4XSsrOwoJCWZvcihpbnQgaj0wO2o8MTA7aisrKQoJCQljb3V0PDxhcnJbal08PCIgIjsKCQkJY291dDw8ZW5kbDsKCQlmb3IoaW50IGo9Y291bnQtMTtjb3VudD49MDtqLS0pewoJCQl4PXByaW1lc1tqXTsKCQkJaWYoeD09MCkKCQkJCWJyZWFrOwoJCQlmb3IoaW50IGs9MDtrPDM7aysrKXtjb3V0PDx4PDwiICI8PGFyclt4JTEwXTw8ZW5kbDsKCQkJCWlmKGFyclt4JTEwXT4wKXsKCQkJCQkvL3NhdmUgdmFsdWUgc3RhdGVzCgkJCQkJaWYoaz09MCl7CgkJCQkJCXRlbXA9eCUxMDsKCQkJCQkJYXJyMlt0ZW1wXSA9IGFyclt0ZW1wXTsKCQkJCQl9CQoJCQkJCWlmKGs9PTEpewoJCQkJCQl0ZW1wMj14JTEwOwoJCQkJCQlpZihhcnIyW3RlbXAyXSA9PSAwKQoJCQkJCQkJYXJyMlt0ZW1wMl0gPSBhcnJbdGVtcDJdOwoJCQkJCX0KCQkJCQlpZihrPT0yKXsKCQkJCQkJdGVtcDM9eCUxMDsKCQkJCQkJaWYoYXJyMlt0ZW1wM10gPT0gMCkKCQkJCQkJCWFycjJbdGVtcDNdID0gYXJyW3RlbXAzXTsKCQkJCQl9CgkJCQkJYXJyM1trXSA9IHglMTA7CgkJCQkJYXJyW3glMTBdLS07CgkJCQl9CgkJCQllbHNlIHsKCQkJCQlpZihrPT0xKQoJCQkJCQlhcnJbdGVtcF0gPSBhcnIyW3RlbXBdOwoJCQkJCWlmKGs9PTIpewoJCQkJCQlhcnJbdGVtcF0gPSBhcnIyW3RlbXBdOwoJCQkJCQlhcnJbdGVtcDJdID0gYXJyMlt0ZW1wMl07CgkJCQkJfQoJCQkJCWJyZWFrOwoJCQkJfQkKCQkJCXgvPTEwOwoJCQkJaWYoeD09MCl7CgkJCQkJaWYoaz09MCkKCQkJCQkJYXJyW3RlbXBdID0gYXJyMlt0ZW1wXTsKCQkJCQlpZihrPT0xKXsKCQkJCQkJYXJyW3RlbXBdID0gYXJyMlt0ZW1wXTsKCQkJCQkJYXJyW3RlbXAyXSA9IGFycjJbdGVtcDJdOwoJCQkJCX0KCQkJCQlpZihrPT0yKXsKCQkJCQkJYXJyW3RlbXBdID0gYXJyMlt0ZW1wXTsKCQkJCQkJYXJyW3RlbXAyXSA9IGFycjJbdGVtcDJdOwoJCQkJCQlhcnJbdGVtcDNdID0gYXJyMlt0ZW1wM107CgkJCQkJfQoJCQkJCXRlbXAgPSAtMTA7CgkJCQkJdGVtcDI9LTU7CgkJCQkJdGVtcDM9LTE7CgkJCQkJLy9jaGVjayB0aGUgb3JkZXIgb2YgbnVtYmVyIGluIHN0cmluZwoJCQkJCWZvcihpbnQgbD0wO2w8bnVtLmxlbmd0aCgpO2wrKyl7CgkJCQkJCWlmKChpbnQpbnVtW2xdLTQ4ID09IGFycjNbMl0gJiYgdGVtcDM9PS0xKQoJCQkJCQkJdGVtcDMgPSBsOwoJCQkJCQllbHNlIGlmKChpbnQpbnVtW2xdLTQ4ID09IGFycjNbMV0gJiYgdGVtcDI8dGVtcDMpCgkJCQkJCQl0ZW1wMiA9IGw7CgkJCQkJCWVsc2UgaWYoKGludCludW1bbF0tNDggPT0gYXJyM1swXSkKCQkJCQkJCXRlbXAgPSBsO2NvdXQ8PHRlbXAzPDwiICI8PHRlbXAyPDwiICI8PHRlbXA8PGVuZGw7CgkJCQkJfQoJCQkJCWlmKGs9PTApewoJCQkJCQlwcmltZSA9IHRydWU7CgkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCQlpZihrPT0xKXsKCQkJCQkJaWYodGVtcDI8dGVtcCl7CgkJCQkJCQlwcmltZSA9IHRydWU7CgkJCQkJCQlicmVhazsKCQkJCQkJfQoJCQkJCX0KCQkJCQlpZihrPT0yKXsKCQkJCQkJaWYodGVtcDMgPCB0ZW1wMiAmJiB0ZW1wMiA8IHRlbXApewoJCQkJCQkJcHJpbWUgPSB0cnVlOwoJCQkJCQkJYnJlYWs7CgkJCQkJCX0KCQkJCQl9CgkJCQkJYnJlYWs7CgkJCQl9CQoJCQl9CgkJCW1lbXNldChhcnIyLDAsc2l6ZW9mKGFycjIpKTsKCQkJaWYocHJpbWUpewoJCQkJY291dDw8cHJpbWVzW2pdPDxlbmRsOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgkJaWYoIXByaW1lKQoJCQljb3V0PDwiLTEiPDxlbmRsOwoJCW1lbXNldChhcnIsMCxzaXplb2YoYXJyKSk7Cgl9CglyZXR1cm4gMDsKfQ==