#include #include #include #include using namespace std; static const int MAX_PRIME = 100001; bool prime[MAX_PRIME]; vector primes; bool isprime(int n){ if (n >= MAX_PRIME){ cout << "out of range : " << n << endl; assert(false); } return prime[n]; } void make_primes(){ for (int i=0; i= MAX_PRIME) break; prime[p] = false; p += a; } } } for (int i=0; i0; i--){ if (isprime(i)) { p = i; break; } } return p; } void solve(int m, int a, int b, int& p, int& q){ double frac = (double)a / b; int s = m; int pp = -1; int qq = -1; int ppqq = -1; q = find_nearest_prime(s+1); for (; q != -1; q=find_nearest_prime(q)){ for (p=find_nearest_prime(min(q,m/q)+1); p!=-1; p=find_nearest_prime(p)){ double f = (double)p / q; if (f <= 1.0 && f >= frac && ppqq < p*q){ pp = p; qq = q; ppqq = p*q; } } } p = pp; q = qq; // assert(false); } int main(){ make_primes(); int m, a, b; for ( ; ; ){ cin >> m >> a >> b; if (!m)break; int p, q; solve(m, a, b, p, q); cout << p << " " << q << endl; } return 0; }