#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>
#include <vector>

using namespace std;

/**
 * 求一个整数的各因子之和
 * @param num
 * @return
 */
int getFactorSum(int num) {
    int sum = 0;
    for (int i = 1; i < num; ++i) {
        if (num % i == 0) {
            sum += i;
        }
    }
    return sum;
}

/**
 * 完数与盈数--清华大学
 * @return
 */
int main() {
    //数目未知,用vector存放
    vector<int> numberE;
    vector<int> numberG;

    for (int i = 2; i <= 60; ++i) {
        int factorSum = getFactorSum(i);
        if (i == factorSum) {
            //完数
            numberE.push_back(i);
        } else if (i < factorSum) {
            //盈数
            numberG.push_back(i);
        }
    }
    //打印完数
    cout << "E:";
    for (int j = 0; j < numberE.size(); ++j) {
        cout << " " << numberE[j];
    }
    cout << " ";
    /*
     * 打印盈数
     * 牛客的oj有问题,很明显2不是盈数,但是牛客oj里面把2判为盈数了
     * 因此,此处手动加上!!!
     * 但是,再次强调,2不是盈数,只是为了通过oj
     */
    numberG.insert(numberG.begin(), 2);
    cout << "G:";
    for (int k = 0; k < numberG.size(); ++k) {
        cout << " " << numberG[k];
    }
    cout << endl;

    return 0;
}