import std.stdio, std.string, std.conv, std.range, std.array, std.algorithm;
import std.uni, std.math, std.container, std.typecons, std.typetuple;
import core.bitop, std.datetime;

immutable long mod = 10^^9 + 7;
immutable long inf = mod;

void main(){
    int n = readln.chomp.to!int;

    auto div = factorize(n);

    writef("%s: ", n);
    writefln("%(%s %)", div);
}

int[] factorize(int n){
    auto div = new int[](0);

    for(int p = 2; p*p <= n; ++p){
        while(n % p == 0){
            n /= p;
            div ~= p;
        }
    }

    if(n > 1) div ~= n;

    return div;
}

bool is_prime(int x){
    for(int i = 2; i*i <= x; ++i){
        if (x % i == 0) {
            return false;
        }
    }

    return true;
}

T modpow(T)(T x, T y, T mod){
    T res = 1;

    while(y > 0){
        (res *= x^^(y&1)) %= mod;
        y >>= 1;
        x = x^^2 % mod;
    }

    return res;
}

void readVars(T...)(auto ref T args){
    auto line = readln.split;
    foreach(ref arg ; args){
        arg = line.front.to!(typeof(arg));
        line.popFront;
    }
    if(!line.empty){
        throw new Exception("args num < input num");
    }
}