//#include<stdio.h>
//int main()
//{
// int m, n;
// int i, j;
// int sum = 0;
// int a;
// scanf("%d %d", &m ,&n);
// for(i=m;i<=n;i++)
// {
// for(j=1;j<=100;i++)
// {
// if(i==j*j)
// {
// sum = sum + i;
// }
// }
// }
// for(i=1;i<=100;i++)
// {
// if(m<=i*i&&i*i<=n)
// {
// a++;
// if(a<1)
// {
// printf("-1");
// }
// else
// {
// printf("%d", sum);
// }
// }
// }
//}
//n의 약수 -> 1 ~ n 탐색 (x) 1 ~루트n (o)
/*
10의 약수
1 10 2 5
#include <math.h>
n의 제곱근 -> sqrt(n) (실수)
a의 b제곱 -> pow(a,b)
*/
//#include<stdio.h>
//#include<math.h>
//int main()
//{
// int n;
// int a;
// long long int sum=0;
// int i;
// scanf("%d", &n);
// a=sqrt(n);
// for(i=1;i<=a;i++)
// {
// if(n%i==0)
// {
// if(n/i==i)
// {
// sum = sum + i;
// }
// else
// {
// sum = sum + i + n/i;
// }
// }
// }
// printf("%lld", sum);
//}
//#include<stdio.h>
//int main()
//{
// printf("35");
//}
//#include<stdio.h>
//#include<math.h>
//int main()
//{
// int i;
// int sum = 0;
// for(i=1; i<=36; i++)
// {
// if(36%i==0)
// {
// sum++;
// }
// }
// printf("%d", sum + 997/36 - 1);
//}
//int gcd(int a, int b) // a와 b의 최대공약수
//{
// if(a==0) return b;
// return gcd(b%a, a);
//}
//int gcd(int a, int b) // a와 b의 최대공약수
//{
// int t;
// while(a!=0)
// {
// t=a;
// a=b%a;
// b=t;
// }
// return b;
//}
// a, b의 최대공약수와 최소공배수의 곱 == a와 b의 곱
// 최대공 * 최소공 == a*b
//#include<stdio.h>
//#include<math.h>
//int gcd(int a, int b) // a와 b의 최대공약수
//{
// if(a==0)
// return b;
// return gcd(b%a, a);
//}
//
//int lcm(int a, int b)
//{
// return a*b/gcd(a,b);
//}
//
//int main()
//{
// int n;
// int k;
// int a;
// int i, j;
// int max=0;
// int min=0;
//
// int mygcd;
// int mylcm;
//
// scanf("%d", &n);
// for(i=1; i<=n; i++)
// {
// scanf("%d", &k);
// if(i==1)
// {
// mygcd=k;
// mylcm=k;
// }
// mygcd=gcd(mygcd,k);
// mylcm=lcm(mylcm,k);
// }
//
// printf("%d\n%d",mygcd, mylcm);
//}
#include<stdio.h>
#include<math.h>
int main()
{
int a, b;
int i, j, k;
int f;
int x, y;
int arr[100001];
int temp;
scanf("%d %d", &a, &b);
x = sqrt(a);
y = sqrt(b);
if(a>b)
{
f=x;
}
else
{
f=y;
}
j=1;
for(i=1; i<=f; i++)
{
if(a%i==0||b%i==0)
{
arr[j] = i;
arr[j+1] = a/i;
arr[j+2] = b/i;
j+=3;
}
}
k = j-1;
for(i=1; i<k; i++)
{
for(j=1; j<=k-i; j++)
{
if (arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
printf("1 ");
for(i=2; i<=k; i++)
{
if(arr[i]!=arr[i-1])
{
printf("%d ", arr[i]);
}
}
}