#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main() {
long long N;
cin >> N;
long long temp = N;
vector<pair<long long, int>> factors;
// Factor out 2
int cnt = 0;
while (temp % 2 == 0) {
cnt++;
temp /= 2;
}
if (cnt > 0) {
factors.push_back(make_pair(2, cnt));
}
// Factor out odd numbers
for (long long i = 3; i * i <= temp; i += 2) {
cnt = 0;
while (temp % i == 0) {
cnt++;
temp /= i;
}
if (cnt > 0) {
factors.push_back(make_pair(i, cnt));
}
}
// If remaining is prime
if (temp > 1) {
factors.push_back(make_pair(temp, 1));
}
// Output factorization
bool first = true;
for (auto &factor : factors) {
if (!first) {
cout << " * ";
}
first = false;
if (factor.second == 1) {
cout << factor.first;
} else {
cout << factor.first << "^" << factor.second;
}
}
return 0;
}