// MulToN.cpp : アプリケーションのエントリ ポイントを定義します。
//
#include <iostream>
#include <vector>
#include <tuple>
#include <cstdint>
#include <cmath>
#include <algorithm>

typedef std::tuple < std::uint64_t, std::uint64_t> Data;
typedef std::vector<Data> DType;

DType MakeHoge(std::uint64_t N) {
	
	std::uint64_t Root = std::sqrt(N);
	DType D;
	std::uint64_t T = N + 1;

	for (std::uint64_t i = 1; i <= Root; i++) {
		if (i*(N / i) == N)D.push_back({ i,N / i });
		if (i*(T + i) == N)D.push_back({ i,T * i });
		if (i*i == N)D.push_back({ i,i });
		if ((T-i)*(T-i) == N)D.push_back({T-i,T-i });
	}
	std::sort(D.begin(), D.end(), [](auto& a, auto& b) {return std::get<0>(a) + std::get<1>(a) < std::get<0>(b) + std::get<1>(b); });

	return D;
}

bool Show(const std::uint64_t N, const Data& D) {
	std::cout << N << ':' << std::get<0>(D) << '*' << std::get<1>(D) << std::endl;
	return true;
}

int main()
{
	DType D;
	for (std::uint64_t i = 0; i <= 1000; i++) {
		D = MakeHoge(i);
		if (D.size() == 0)continue;
		Show(i, D[0]);
	}
	
	return 0;
}