#include <iostream>
#include <stack>
#include <string>
#include<queue>
#include<vector>
#include<list>//双向链表
using namespace std;//
bool isE(int x)
{
vector<int> v1;
for (int i = 1; i < x; i++){
if(x%i==0){ v1.push_back(i);
}
}
vector<int>::iterator it;
int sum = 0;
for(it = v1.begin(); it != v1.end(); it++) {
sum += *it;
}
if (sum == x)return 1;
else return 0;
}
bool isG(int x)
{
vector<int> v1;
for (int i = 1; i < x; i++) {
if (x % i == 0) {
v1.push_back(i);
}
}
vector<int>::iterator it;
int sum = 0;
for (it = v1.begin(); it != v1.end(); it++) {
sum += *it;
}
if (sum >x)return 1;
else return 0;
}
int main() {
vector<int> E;
vector<int> G;
vector<int>::iterator ite, itg;
ite = E.begin();
itg = G.begin();
for (int i = 2; i < 61; i++) {
if (isE(i)) {
E.push_back(i);
}
if (isG(i)) {
G.push_back(i);
}
}
cout << "E:";
for (ite = E.begin(); ite != E.end(); ite++) {
cout <<" "<<*ite;
}
cout << endl;
cout << "G:";
for (itg = G.begin(); itg != G.end(); itg++) {
cout << " "<< *itg ;
}
}