#include <stdio.h> #include <math.h> #include <iostream> #include <algorithm> using namespace std; #define maxn 1000 int que[maxn]; int top; int find(int x) { int i,j,k; top=0; int sum=1; que[top++]=1; for(i=2;i<=sqrt(x);i++) if(x%i==0) { que[top++]=i; que[top++]=x/i; if(i!=x/i) sum+=i+x/i; } if(sum==x) return 1; else return 0; } int main() { int n; while(1) { int flag=0; scanf("%d",&n); if(n==-1) break; if(find(n)) { sort(que,que+top); printf("%d = ",n); for(int i=0;i<top;i++) { if(i!=top-1) printf("%d + ",que[i]); else printf("%d",que[i]); } printf("\n"); } else printf("%d is NOT perfect.\n",n); } return 0; }