// # pragma GCC target("avx2") // # pragma GCC optimize("O3") // # pragma GCC optimize("unroll-loops") #ifdef harurun #define debug(x) cerr<<#x<<": "< using namespace std; #if __has_include() #include using namespace atcoder; using mint = modint998244353; // using mint = modint1000000007; // using mint = double; #endif //define using ll = long long; using ull = unsigned long long; using pii = pair; using pll = pair; using vi = vector; using vll = vector; #define rep(i,l,r) for (int i = (int)(l); i < (int)(r); i++) #define rrep(i,l,r) for (int i = (int)(r-1); i >= (int)(l); i--) #define len(x) (int)(x).size() #define all(x) (x).begin(), (x).end() #define elif else if #define pb push_back #define eb emplace_back #define fi first #define se second const int inf = 1e9; const long long infl = 1LL<<60; const int mod = 998244353; ll pow(ll a, ll b, ll p){ ll ans = 1; while(b){ if(b & 1) (ans *= a) %= p; (a *= a) %= p; b /= 2; } return ans; } template bool chmin(T& a, const U& b){ if(a > T(b)){ a = b; return 1; } return 0; } template bool chmax(T& a, const U& b){ if(a < T(b)){ a = b; return 1; } return 0; } template using spq = priority_queue, greater>; templateistream& operator>>(istream& i, vector& v) {for(int j = 0; j < (int)(v).size(); j++) i >> v[j]; return i;} struct IoSetup { IoSetup() { cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(15); cerr << fixed << setprecision(15); } } iosetup; vi div(int n){ vi d; int i = 1; while (i * i <= n){ if (n % i == 0){ d.pb(i); if (i != n / i){ d.pb(n / i); } } i++; } sort(all(d)); return d; } void solve(){ int n, l, r; cin >> n >> l >> r; vi ds = div(n); map d; map m; vi ods; for (auto x : ds) if (l <= x and x <= r) ods.pb(x); for (auto a : ods){ for (auto b : ods){ if (a == b) continue; // cout << a << " " << b << endl; int l = lcm(a, b); int ml = inf; if (m.count(l) == 0){ for (auto c : ds){ // cout << l << " " << c << " " << lcm(c, l) << " " << n << endl; if (lcm(l, c) == n) chmin(ml, c); } m[l] = ml; }else{ ml = m[l]; } vi ok; if (d.count(ml) == 0){ for (auto c : ods){ if (c % ml == 0) ok.pb(c); if (len(ok) >= 3) break; } d[ml] = ok; }else{ ok = d[ml]; } // cout << a << " " << b << " " << ml << " " << endl; // for (auto e : ok) cout << e << " "; // cout << endl; for (auto c : ok){ if (c != a and c != b){ vi ans = {a, b, c}; sort(all(ans)); for (auto e : ans){ cout << e << " "; } cout << endl; return ; } } } } cout << -1 << endl; return ; } int main(){ int t; cin >> t; // t = 1; while(t--) solve(); return 0; }