/*
#include <stdio.h>
#include <math.h>
int v[32000],s,e;
void swap(int x,int y)
{
int temp;
temp=v[x];
v[x]=v[y];
v[y]=temp;
}
int pt(int start,int end)
{
s=start+1;
e=end;
while (s<=e)
{
while (v[start]>=v[s])
{
s++;
}
while (v[start]<v[e])
{
e--;
}
if (s<e)
{
swap(s,e);
}
}
swap(start,e);
return e;
}
void qs(int g,int h)
{
int j;
j=pt(g,h);
if (g<=h)
{
qs(g,j-1);
qs(j+1,h);
}
}
int main()
{
int a,b,k=0,c=0;
scanf("%d %d",&a,&b);
for (int i=1; i<=sqrt(b); i++)
{
if (a%i==0 && i<=sqrt(a))
{
v[k]=i;
k++;
if(i!=a/i)
{
v[k]=a/i;
k++;
}
c=1;
}
if (b%i==0&&(a!=b))
{
if (c==1)
{
v[k]=b/i;
k++;
}
else
{
if (b%a!=0)
{
v[k]=i;
k++;
}
if (b/i!=i)
{
v[k]=b/i;
k++;
}
}
}
c=0;
}
//qs(0,k);
for (int i=0; i<k; i++)
{
printf("%d ",v[i]);
}
}
*/
/*
#include <stdio.h>
#include <math.h>
int v[1000],s,e;
void swap(int x,int y)
{
int temp;
temp=v[x];
v[x]=v[y];
v[y]=temp;
}
int pt(int start,int end)
{
s=start+1;
e=end;
while (s<=e)
{
while (v[start]>=v[s])
{
s++;
}
while (v[start]<v[e])
{
e--;
}
if (s<e)
{
swap(s,e);
}
}
swap(start,e);
return e;
}
void qs(int g,int h)
{
int j;
j=pt(g,h);
if (g<=h)
{
qs(g,j-1);
qs(j+1,h);
}
}
int main()
{
int a,b,k=0,c=0;
scanf("%d %d",&a,&b);
for (int i=1; i<=sqrt(b); i++)
{
if (a%i==0 && i<=sqrt(a))
{
v[k]=i;
k++;
if(i!=a/i)
{
v[k]=a/i;
k++;
}
c=1;
}
if (b%i==0&&(a!=b))
{
if (c==1)
{
v[k]=b/i;
k++;
}
else
{
v[k]=i;
k++;
if (b/i!=i)
{
v[k]=b/i;
k++;
}
}
}
c=0;
}
//qs(0,k);
for (int i=0; i<k; i++)
{
printf("%d ",v[i]);
}
}
*/