TLE19-23
#include <iostream>
#include <cstring>
using namespace std;
string k;
bool vis[3000005];
int ans[3000005],a,b,c,len,step=0;
bool dfs(int x,char t)
{
if(t=='A')
{
a=x;
for(int i=x+1;i<len-1;i++)
{
if(vis[i]==false&&k[i]=='P')
{
if(dfs(i,'P'))return true;
}
}
}
if(t=='P')
{
b=x;
for(int i=x+1;i<len;i++)
{
if(vis[i]==false&&k[i]=='C')
{
if(dfs(i,'C'))
{
return true;
}
}
}
}
if(t=='C')
{
c=x;
vis[a]=true;
vis[b]=true;
vis[c]=true;
ans[step*3]=a+1;
ans[step*3+1]=b+1;
ans[step*3+2]=c+1;
step++;
return true;
}
return false;
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>k;
len=k.size();
step=0;
memset(vis,0,sizeof(vis));
for(int i=0;i<len-2;i++)
{
if(k[i]=='A')
{
if(!dfs(i,'A'))
{
break;
}
}
}
bool flag=false;
for(int i=0;i<len;i++)
{
if(!vis[i])
{
printf("%c",k[i]);
flag=true;
}
}
if(flag==false)
{
printf("Perfect\n");
}
else printf("\n");
printf("%d\n",step);
for(int i=0;i<step;i++)
{
printf("%d %d %d\n",ans[i*3],ans[i*3+1],ans[i*3+2]);
}
}
return 0;
}