#include using namespace std; using ll = long long; tuple search(vector &divs, ll lcv){ int n = divs.size(); constexpr int th = 50; int W = min(th, n); for(int i = 0; i < W; i++){ for(int j = i + 1; j < W; j++){ ll lv2 = lcm(divs.rbegin()[i], divs.rbegin()[j]); for(int k = j + 1; k < W; k++){ if(lcm(lv2, divs.rbegin()[k]) == lcv){ return make_tuple(divs.rbegin()[k], divs.rbegin()[j], divs.rbegin()[i]); } } } } 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; for(ll i = 1; i * i <= n; i++){ if(n % i == 0){ if(l <= i && i <= r) divs.emplace_back(i); ll v = n / i; if(l <= v && v <= r && v != i) divs.emplace_back(v); } } if(divs.size() < 3){ cout << "-1\n"; continue; } sort(divs.begin(), divs.end()); auto [A, B, C] = search(divs, n); if(A == -1){ cout << "-1\n"; }else{ cout << A << ' ' << B << ' ' << C << '\n'; } } }