#include <bits/stdc++.h>
using namespace std;
int main() {
int angka;
cin >> angka;
vector<int> data;
while (angka % 2 == 0) {
data.push_back(2);
angka /= 2;
}
for (int a = 3; a * a <= angka; a += 2) {
while (angka % a == 0) {
data.push_back(a);
angka /= a;
}
}
if (angka > 1) data.push_back(angka);
int a = 0;
int tag = 0;
for (a = 0; a < data.size(); a++) {
int jumlah = 0;
tag = data[a];
for (int b = a; b < data.size(); b++) {
if (tag == data[b]) {
jumlah++;
} else {
break;
}
}
cout << data[a] << "^" << jumlah << " ";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWludCBhbmdrYTsKCWNpbiA+PiBhbmdrYTsKCQoJdmVjdG9yPGludD4gZGF0YTsKCXdoaWxlIChhbmdrYSAlIDIgPT0gMCkgewoJCWRhdGEucHVzaF9iYWNrKDIpOwoJCWFuZ2thIC89IDI7Cgl9CgkKCWZvciAoaW50IGEgPSAzOyBhICogYSA8PSBhbmdrYTsgYSArPSAyKSB7CgkJd2hpbGUgKGFuZ2thICUgYSA9PSAwKSB7CgkJCWRhdGEucHVzaF9iYWNrKGEpOwoJCQlhbmdrYSAvPSBhOwoJCX0KCX0KCQoJaWYgKGFuZ2thID4gMSkgZGF0YS5wdXNoX2JhY2soYW5na2EpOwoJCglpbnQgYSA9IDA7CglpbnQgdGFnID0gMDsKCWZvciAoYSA9IDA7IGEgPCBkYXRhLnNpemUoKTsgYSsrKSB7CgkJaW50IGp1bWxhaCA9IDA7CgkJdGFnID0gZGF0YVthXTsKCQlmb3IgKGludCBiID0gYTsgYiA8IGRhdGEuc2l6ZSgpOyBiKyspIHsKCQkJaWYgKHRhZyA9PSBkYXRhW2JdKSB7CgkJCQlqdW1sYWgrKzsKCQkJfSBlbHNlIHsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCWNvdXQgPDwgZGF0YVthXSA8PCAiXiIgPDwganVtbGFoIDw8ICIgIjsKCX0KfQo=