#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

char* getResult(long ulDataInput);

int main(void)
{
	long int ulDataInput = 0;

	scanf("%ld", &ulDataInput);

	char* string = { 0 };
	string = getResult(ulDataInput);
	puts(string); // 打印

	free(string); // 释放,防止内存泄漏

	system("pause");

	return 0;
}

char* getResult(long ulDataInput)
{
	char* string = (char*)malloc(ulDataInput*sizeof(char));
	char* s = { 0 };
	int j = 0;
	long int num = ulDataInput;

	for (long int i = 2; i <= ulDataInput; i++) // 提取公因子
	{
		while (num%i == 0) // 如果取余为0,则表明i为公因子
		{
			num /= i;

			sprintf(string + j, "%ld%c", i, ' '); // 将公因子i和‘ ’组合成字符串
			j = strlen(string); // 用于修改指针
		}
	}

	return string; 
}