1 #include <iostream>
   2 #include <sstream>
   3 #include <string>
   4 #include <algorithm>
   5 #include <vector>
   6 using namespace std;
   7 
   8 #define GI ({int _t; scanf("%d", &_t); _t;})
   9 #define FOR(i, a, b) for (int i=a; i<=b; i++)
  10 #define REP(i, a) FOR(i, 0, a)
  11 template<class T> string toString(T n){ostringstream ost;ost<<n;ost.flush();return ost.str();}
  12 int toInt(string s){int r=0;istringstream sin(s);sin>>r;return r;}
  13 #define DBGV(_v) { REP(_i, _v.size()) { cout << _v[_i] << "\t";} cout << endl;}
  14 
  15 int factor_count(int num) {
  16 	if (num == 1) return 0;
  17 	int res = 1;
  18 	FOR(i, 2, num/2) {
  19 		if (num%i==0) res+=i;
  20 	}
  21 	return res;
  22 }
  23 int main() {
  24 	int num;
  25 	printf("PERFECTION OUTPUT\n");
  26 	while (1) {
  27 		num = GI;
  28 		if (num == 0) break;
  29 		int fcount = factor_count(num);
  30 		if (fcount == num) {
  31 			printf("%5d  PERFECT\n", num);
  32 		}
  33 		else if (fcount > num) {
  34 			printf("%5d  ABUNDANT\n", num);
  35 		}
  36 		else if (fcount < num) {
  37 			printf("%5d  DEFICIENT\n", num);
  38 		}
  39 	}
  40 	printf("END OF OUTPUT\n");
  41 	return 0;
  42 }