#include <bits/stdc++.h>
using namespace std;
const long long MOD = 998244353;
const double oula = 0.57721566490153286060651209;
using namespace std;
map<long long, string> mp;
int main() {
  std::ios::sync_with_stdio(false);
  long long n;
  cin >> n;
  long long nn = sqrt(n);
  string tmp;
  for (long long i = 2; i <= nn; i++) {
    long long num = i * i;
    int co = 2;
    while (num <= n) {
      tmp = to_string(i) + "^" + to_string(co);
      if (!mp.count(num)) mp[num] = to_string(num);
      if (mp[num].size() > tmp.size()) mp[num] = tmp;
      co++;
      num *= i;
    }
  }
  string ans = to_string(n);
  map<long long, string>::iterator it;
  for (it = mp.begin(); it != mp.end(); it++) {
    tmp = "";
    long long a = n / it->first, b = n % it->first;
    if (a > 1) {
      if (mp.count(a))
        tmp = mp[a];
      else
        tmp = to_string(a);
      tmp += "*";
    }
    tmp += it->second;
    if (b) tmp = tmp + "+" + (mp.count(b) ? mp[b] : to_string(b));
    if (ans.size() > tmp.size()) ans = tmp;
  }
  cout << ans << endl;
}
