#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  char ch = getchar();
  if (!(~ch)) return 0;
  int f = 1;
  while (ch > '9' || ch < '0') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  long long x = 0;
  while (ch >= '0' && ch <= '9') {
    x = (x << 3) + (x << 1) + (ch ^ 48);
    ch = getchar();
  }
  return x * f;
}
map<long long, string> ma;
int main() {
  long long n = read();
  for (long long i = 2; i * i <= n; ++i)
    for (long long j = i * i, k = 2; j <= n; j *= i, ++k) {
      string s = to_string(i) + "^" + to_string(k);
      if (!ma.count(j)) ma[j] = to_string(j);
      if (s.length() < ma[j].length()) ma[j] = s;
    }
  string ans = to_string(n);
  for (auto i : ma) {
    string s = "";
    long long k = n / i.first, b = n % i.first;
    if (k > 1) s = (ma.count(k) ? ma[k] : to_string(k)) + "*";
    s += i.second;
    if (b) s += "+" + (ma.count(b) ? ma[b] : to_string(b));
    if (s.length() < ans.length()) ans = s;
  }
  cout << ans << endl;
  return 0;
}
