#include #include #include #include #include #include using namespace std; int n; int p[10]; int exp[10]; vector cisla; int mymin, mymax; long long pocitej() { int i,j; unsigned int vysledek = 1; unsigned int last; int preteklo = 0; for (i = 0; i < n; i++) { for (j = 0; j < exp[i]; j++) { last = vysledek; vysledek *= p[i]; if (vysledek < last) { preteklo = 1; break; } else { preteklo = 0; } } } if (preteklo) { return -1; } return vysledek; } void go() { cisla.clear(); int i, j; for (i = 0; i < n; i++) { scanf("%d",&p[i]); } scanf("%d",&mymin); scanf("%d",&mymax); if (mymin == 1) cisla.push_back(1); //nul for (i = 0; i < n; i++) { exp[i] = 0; } exp[0] = 1; int rad = 0; long long vys; while (rad < n) { vys = pocitej(); if (vys >= mymin && vys <= mymax) { //pridat do seznamu cisla.push_back(vys); } if (vys < mymax) { exp[0]++; } else { for (i = 0; i < n; i++) { if (i == n-1) { return; } if (exp[i] != 0) { break; } } //cyklus prejel if (i >= n - 1) { return; } else { exp[i] = 0; exp[i+1]++; } } } } int main() { while (1) { scanf("%d", &n); if (n == 0) { return 0; } go(); if (cisla.size() == 0) { printf("none\n"); continue; } sort(cisla.begin(), cisla.end()); int i; int l = cisla.size(); for (i = 0; i < l; i++) { if (i == l - 1) { printf("%d", cisla[i]); } else { printf("%d,", cisla[i]); } } printf("\n"); } }