#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 ;
	}
}