#include #include #include #include #define LOG(x) cout << #x << "=" << (x) << endl; using namespace std; void work(); bool rec(int mul); vector primes; set mults; priority_queue mults_sorted; int n, minm, maxm; int main(int argc, char **argv) { while (true) { cin >> n; if (n <= 0) break; primes.resize(n); int p; for (int i = 0; i < n; i++) { cin >> p; primes[i] = p; } cin >> minm; cin >> maxm; // LOG(n); LOG(minm); LOG(maxm); work(); mults.clear(); primes.clear(); } return 0; } void work() { rec(1); for (set::iterator it = mults.begin(); it != mults.end(); it++) mults_sorted.push(*it); if (mults.empty()) cout << "none" << endl; else { vector rev; while (!mults_sorted.empty()) { rev.push_back(mults_sorted.top()); mults_sorted.pop(); } for (vector::reverse_iterator it = rev.rbegin(); it != rev.rend();) { cout << *it; it++; if (it != rev.rend()) cout << ','; else break; } cout << endl; } } bool rec(int mul) { // LOG(mul); if (mul > maxm) return false; if (mul >= minm && !mults.count(mul)) mults.insert(mul); for (int i = 0; i < n; i++) if (!rec(mul * primes[i])) break; return true; }