#include <bits/stdc++.h>
using namespace std;
map<long long, string> mp;
long long n;
int main() {
  scanf("%lld", &n);
  for (long long i = 2; i * i <= n; ++i)
    for (long long j = i * i, k = 2; j <= n; j *= i, k++) {
      string tmp = to_string(i) + "^" + to_string(k);
      if (!mp.count(j)) mp[j] = to_string(j);
      if (tmp.size() < mp[j].size()) mp[j] = tmp;
    }
  string ans = to_string(n);
  for (auto x : mp) {
    string tmp = "";
    long long k = n / x.first, b = n % x.first;
    if (k > 1) tmp = (mp.count(k) ? mp[k] : to_string(k)) + "*";
    tmp += x.second;
    if (b) tmp += "+" + (mp.count(b) ? mp[b] : to_string(b));
    if (tmp.size() < ans.size()) ans = tmp;
  }
  cout << ans << endl;
  return 0;
}
