#include #include #include #include #define LOG(x) cout << #x << "=" << (x) << endl; using namespace std; void work(); bool rec(long long mul); vector primes; set mults; priority_queue mults_sorted; int n; long long minm, maxm; int main(int argc, char **argv) { while (true) { cin >> n; if (n <= 0) break; int p; for (int i = 0; i < n; i++) { cin >> p; primes.push_back(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++) if (*it >= minm) mults_sorted.push(*it); if (mults_sorted.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(long long mul) { // LOG(mul); if (mul > maxm || mul < 1 || mults.count(mul)) return false; mults.insert(mul); for (int i = 0; i < n; i++) { if (!rec(mul * primes[i])) break; } return true; }