func_code_string: #include <bits/stdc++.h>   using namespace std;   inline int read() {     char c = getchar();     int x = 0, f = 1;     while (c <  0  || c >  9 ) {       if (c ==  - ) f = -1;       c = getchar();     }     while (c >=  0  && c <=  9 ) {       x = x * 10 + c -  0 ;       c = getchar();     }     return x * f;   }   const int maxn = 1e6 + 10;   const int inf = 2147483647;   int main() {     vector<int> v, prim;     vector<bool> isprim;     int lim = sqrt(1.0 * 1000000000) + 10;     isprim.resize(lim);     isprim[0] = isprim[1] = 1;     for (int i = 2; i <= lim; ++i) {       if (isprim[i] == false) {         for (int j = i + i; j <= lim; j = j + i) isprim[j] = true;       }     }     for (int i = 2; i <= lim; ++i) {       if (isprim[i] == false) prim.push_back(i);     }     int sz = prim.size();     set<int> se;     set<int>::iterator it;     int T;     scanf( %d , &T);     while (T--) {       int n = read();       bool flag = false;       se.clear();       for (int i = 2; i * i <= n; ++i) {         if (n % i == 0 && isprim[i] == false) {           se.insert(i);           n /= i;           flag = true;           break;         }       }       if (!flag) {         puts( NO );         continue;       }       flag = false;       for (int i = sqrt(n); i >= 2; i--) {         if (n % i == 0 && se.count(i) == 0 && se.count(n / i) == 0 &&             i != n / i) {           flag = true;           se.insert(i);           se.insert(n / i);           break;         }       }       if (!flag) {         puts( NO );         continue;       }       puts( YES );       for (it = se.begin(); it != se.end(); ++it) {         printf( %d  , *it);       }       puts(  );     }     return 0;   }   