#include <bits/stdc++.h>
using namespace std;
bool isPrime(long long num) {
if (num <= 1) return false;
for (long long i = 2; i*i <= num; i++) {
if (num % i == 0) return false;
}
return true;
}
struct prime {
long long num, cnt;
};
int main() {
int n; cin >> n;
vector<prime> v;
int i = 2;
for (long long i = 2; i*i <= n;i++) {
if (isPrime(i)) {
int cnt = 0;
while (true) {
if (n % i != 0) {
break;
}
n = n / i;
cnt++;
}
if(cnt>0) v.push_back(prime{ i,cnt });
}
}
if (n != 1) v.push_back(prime{ n,1 });
for (int i = 0; i < v.size(); i++) {
if (v[i].cnt == 1) cout << v[i].num ;
else cout << v[i].num << "^" << v[i].cnt;
if (i != v.size() - 1) { cout << " * "; };
}
}