//Można zawsze inaczej - to zadanie dla Ciebie
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
/* przyśpieszenie strumieni iostream
Wywołać std::ios_base::sync_with_stdio(false); przed jakąkolwiek operacją we/wy;
Używać '\n' zamiast std::endl;
Wywołać std::cin.tie(nullptr); przed przemieszanymi operacjami we/wy.
*/
int main() {
ios_base::sync_with_stdio(false);
//do pierwszego rozwiązania
vector <int> v;
//do drugiego rozwiązania
vector <int> v1; //pierwszy podzielnik
vector <int> v2; //podzielnik do pary
int x=225;
int p=2;
//wypełniam 1 rozwiązanie
while  (p*p<x)
{
 if (x%p==0) 
  {v.push_back(p);
   v.push_back(x/p);}
   p++;
}
if (p*p==x) v.push_back(p);
//gotowe
//ewentualne sortowanie
//sort(v.begin(),v.end());
for (int i=0; i<v.size();i++)
  cout <<v[i]<<" ";
//wypełnianie 2 rozwiązanie są posortowane

p=2;
while  (p*p<x)
{
 if (x%p==0) 
  {v1.push_back(p);
   v2.insert(v2.begin(),x/p);}
   p++;
}
if (p*p==x) v2.insert(v2.begin(),p);

//wypisanie dla 2 rozwiązania
cout <<"\n";
for (int i=0; i<v1.size();i++)
  cout <<v1[i]<<" ";
for (int i=0;i<v2.size();i++)
  cout <<v2[i]<<" ";  
//scalenie wektorów do v1
cout <<"\n";
v1.insert(v1.end(),v2.begin(), v2.end());
for (int i=0; i<v1.size();i++)
  cout <<v1[i]<<" ";
}