#include using namespace std; using ll = long long; tuple search(vector &divs, vector &D, ll lcv){ if(lcm(lcm(divs.rbegin()[2], divs.rbegin()[1]), divs.rbegin()[0]) == lcv){ return make_tuple(divs.rbegin()[2], divs.rbegin()[1], divs.rbegin()[0]); } auto f = [&](ll v){ return lower_bound(D.begin(), D.end(), v) - D.begin(); }; int m = divs.size(), n = D.size(); vector> dp(n, make_pair(-1, -1)); for(int i = 0; i < m; i++){ for(int j = i + 1; j < m; j++){ int k = f(lcm(divs[i], divs[j])); if(dp[k].first == -1) dp[k] = make_pair(i, j); } } for(int i = 0; i < n; i++){ if(dp[i].first == -1) continue; for(int j = dp[i].second + 1; j < m; j++){ if(lcm(D[i], divs[j]) == lcv){ auto [a, b] = dp[i]; return make_tuple(divs[a], divs[b], divs[j]); } } } return make_tuple(-1, -1, -1); } int main(){ ios::sync_with_stdio(false); cin.tie(0); int T; cin >> T; while(T--){ ll n, l, r; cin >> n >> l >> r; vector divs, D; for(ll i = 1; i * i <= n; i++){ if(n % i == 0){ if(l <= i && i <= r) divs.emplace_back(i); D.emplace_back(i); ll v = n / i; if(l <= v && v <= r && v != i) divs.emplace_back(v); if(v != i) D.emplace_back(v); } } if(divs.size() < 3){ cout << "-1\n"; continue; } sort(divs.begin(), divs.end()); sort(D.begin(), D.end()); auto [A, B, C] = search(divs, D, n); if(A == -1){ cout << "-1\n"; }else{ cout << A << ' ' << B << ' ' << C << '\n'; } } }