#include<bits/stdc++.h>
#define ll long long
using namespace std;

signed main() {
	int a;
	while (scanf("%d", &a), a) {
		int p = a;
		map<int, int>c;
		for (int b = 2; b < sqrt(a); b++) {
		while(a%b==0){
			a /= b;
			c[b]++;
		}
		}
		if (a != 1)c[a]++;
		ll s = 1;
		for (auto k = c.begin(); k != c.end(); k++) {
			int x = 0, y = 1;
			for (int z = 0; z <= k->second; z++) {
				x += y;
				y *= k->first;
			}
			s *= x;
		}
		s -= p;
		if (p == s)puts("perfect number");
		else if (p > s)puts("deficient number");
		else puts("abundant number");
	}
}
### Prompt

Your task is to create a Cpp solution to the following problem:

Let S be the sum of divisors of an integer N excluding the number itself. When N = S, N is called a perfect number, when N> S, N is called a defendant number, and when N <S, N is called an abundant number. Create a program that determines whether a given integer is a perfect number, a missing number, or an abundant number.

Be careful not to exceed the program execution time.



Input

The input consists of a sequence of datasets. The number of datasets is 100 or less.

Each dataset consists of one row containing only the integer N (0 <N ≤ 100000000).

After the last dataset, there is a line marked 0 that marks the end of the input.

Output

For each dataset, print the string "` perfect number` "if the integer N is a perfect number," `deficient number`" if it is a missing number, or "` abundant number` "if it is an abundant number. ..

Example

Input

1
2
3
4
6
12
16
28
33550336
99999998
99999999
100000000
0


Output

deficient number
deficient number
deficient number
deficient number
perfect number
abundant number
deficient number
perfect number
perfect number
deficient number
deficient number
abundant number

### Response

```cpp
#include<bits/stdc++.h>
#define ll long long
using namespace std;

signed main() {
	int a;
	while (scanf("%d", &a), a) {
		int p = a;
		map<int, int>c;
		for (int b = 2; b < sqrt(a); b++) {
		while(a%b==0){
			a /= b;
			c[b]++;
		}
		}
		if (a != 1)c[a]++;
		ll s = 1;
		for (auto k = c.begin(); k != c.end(); k++) {
			int x = 0, y = 1;
			for (int z = 0; z <= k->second; z++) {
				x += y;
				y *= k->first;
			}
			s *= x;
		}
		s -= p;
		if (p == s)puts("perfect number");
		else if (p > s)puts("deficient number");
		else puts("abundant number");
	}
}
```