Problem:
Prime Factorization

Factorize a given integer n.

Input

n

An integer n is given in a line.

Output

Print the given integer n and :. Then, print prime factors in ascending order. If n is divisible by a prime factor several times, the prime factor should be printed according to the number of times. Print a space before each prime factor.

Constraints

2 ≤ n ≤ 109

Sample Input 1

12

Sample Output 1

12: 2 2 3

Sample Input 2

126

Sample Output 2

126: 2 3 3 7

Solution in C# (judge verdict: Wrong Answer)

// Elementary Number Theory - Prime Factorize
// http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=NTL_1_A
using System;
using System.Linq;
using System.Collections.Generic;

namespace NTL_1_A {
	class Program {
		public Program() {}
		
		public static void Main() {
			new Program().Calc();
		}
		
		void Calc() {
			var n = int.Parse(Input);
			var factors = Factorize(n).Select(i => i.ToString())
									.Aggregate((i, j) => i + " " + j);
			
			Output(n + ": " + factors);
		}
		
		String Input {
			get {
				return Console.ReadLine();
			}
		}
		
		void Output(String str) {
			Console.WriteLine(str);
		}
		
		int[] Factorize(int n) {
			List<int> factors = new List<int>();
			int i = n, j = 2;
			while(j * j <= n) {
				if(i % j == 0) {
					factors.Add(j);
					i /= j;
					n *= j;
				} else j++;
			}
			if(factors.Count == 0) factors.Add(n);
			return factors.ToArray();
		}
	}
}