#include <bits/stdc++.h>
#include <queue>
#define MAXC 30000100
using namespace std;
int INA;
queue <int> aq,pq,cq;
string IN;
struct node
{
int ad,pd,cd;
}apc[MAXC];
void not_apc(int len)
{
int ans=0;
bool depend=true;
while(!aq.empty() && !pq.empty() && !cq.empty())
{
int anow,pnow,cnow;
anow=aq.front();
aq.pop();
while(pq.front()<=anow && !pq.empty()) pq.pop(),depend=false;
if(pq.empty()) break;
pnow=pq.front();
pq.pop();
while(cq.front()<=pnow && !cq.empty()) cq.pop(),depend=false;
if(cq.empty()) break;
cnow=cq.front();
cq.pop();
apc[++ans].ad=anow+1;
apc[ans].pd=pnow+1;
apc[ans].cd=cnow+1;
IN[anow]='O';
IN[pnow]='O';
IN[cnow]='O';
}
if(!pq.empty() || !cq.empty() || !aq.empty()) depend=false;
if(depend) cout<<"Perfact"<<endl;
else
{
for(int i=0;i<len;i++)
{
if(IN[i]=='O') continue;
cout<<IN[i];
}
cout<<endl;
}
cout<<ans<<endl;
for(int i=1;i<=ans;i++) cout<<apc[i].ad<<" "<<apc[i].pd<<" "<<apc[i].cd<<endl;
return;
}
void clear_queue(queue<int>& q)
{
queue <int> empty;
swap(empty,q);
}
int main()
{
cin>>INA;
for(int i=1,lin;i<=INA;i++)
{
cin>>IN;
lin=IN.size();
for(int i=0;i<lin;i++)
{
if(IN[i]=='A') aq.push(i);
if(IN[i]=='P') pq.push(i);
if(IN[i]=='C') cq.push(i);
}
not_apc(lin);
clear_queue(aq);
clear_queue(pq);
clear_queue(cq);
}
return 0;
}