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: Runtime Error)

using System.Collections.Generic;
using System;
using System.Linq;
public class PrimeFactorize
{
    public static void Main()
    {
        var n = int.Parse(Console.ReadLine());
        
        var primes = new List<int>();
        Do(primes, n, 2);
        
        Console.WriteLine(string.Format("{0}: {1}", n, string.Join(" ", primes.Select(x => x.ToString()).ToArray())));
   }
    
    
    private static void Do(List<int> primes, int input, int denom)
    {
        if (input == denom)
        {
            primes.Add(denom);
        }
        else if (input % denom == 0)
        {
            primes.Add(denom);
            Do(primes, input / denom, denom);
        }
        else
        {
            Do(primes, input, denom + 1);
        }
    }
}