#include<iostream>
#include<cstdio>
using namespacce std;
int main()
{
int n;
cin>>n;//n为最大值
while(n--)//判断n次;为0时自动停止循环
{
int x;//判断1-n之间的数是否为完全数;
cin>>x;
int s=0;
for(int i=1;i<x;i++)
{
if(x%i==0)
s+=i;
if(s==x)printf("%d is perfect\n",x);
else printf("%d is not perfect\n",x);
}
}
//由于c++运行速度有限,处理大数据时可能会超时,故我们可以采取一种优化
//优化如下:
#include<iostream>
#include<cstdio>
using namespacce std;
int main()
{
int n;
cin>>n;//n为最大值
while(n--)//判断n次;为0时自动停止循环
{
int x;//判断1-n之间的数是否为完全数;
cin>>x;
int s=0;
for(int i=1;i*i<=x;i++)
{
if(x%i==0)
{
if(i<x)s+=i;
if(i!=x/i&&x/i<x)s+=x/i;
}
}
if(s==x)printf("%d is perfect\n",x);
else printf("%d is not perfect\n",x);
}
return 0;
}