#include <bits/stdc++.h>
float a1(float x, float y, float z) {
  if (x >= 1.0)
    return z * log(y) + log(log(x));
  else if (x < 1.0 && y < 1.0 && z < 1.0)
    return z * log(y) + log(log(1 / x));
  else
    return 0.0 / 0.0;
}
float a2(float x, float y, float z) {
  if (x >= 1.0)
    return log(z) + log(y) + log(log(x));
  else if (x < 1.0 && y < 1.0 && z < 1.0)
    return log(z) + log(y) + log(log(1 / x));
  else
    return 0.0 / 0.0;
}
int main() {
  float x, y, z;
  scanf("%f %f %f", &x, &y, &z);
  float a[12];
  char pat[12][10] = {"x^y^z\0", "x^z^y\0", "(x^y)^z\0", "(x^z)^y\0",
                      "y^x^z\0", "y^z^x\0", "(y^x)^z\0", "(y^z)^x\0",
                      "z^x^y\0", "z^y^x\0", "(z^x)^y\0", "(z^y)^x\0"};
  a[0] = a1(x, y, z);
  a[1] = a1(x, z, y);
  a[2] = a2(x, y, z);
  a[3] = a2(x, z, y);
  a[4] = a1(y, x, z);
  a[5] = a1(y, z, x);
  a[6] = a2(y, x, z);
  a[7] = a2(y, z, x);
  a[8] = a1(z, x, y);
  a[9] = a1(z, y, x);
  a[10] = a2(z, x, y);
  a[11] = a2(z, y, x);
  float ans;
  int pos, i;
  if (x >= 1.0) {
    ans = a[0];
    pos = 0;
  } else if (y >= 1.0) {
    ans = a[4];
    pos = 4;
  } else {
    ans = a[8];
    pos = 8;
  }
  if (x < 1 && y < 1 && z < 1) {
    for (i = 11; i >= 0; --i) {
      if (a[i] <= ans) {
        ans = a[i];
        pos = i;
      }
    }
  } else {
    for (i = 11; i >= 0; --i) {
      if (a[i] >= ans) {
        ans = a[i];
        pos = i;
      }
    }
  }
  printf("%s", pat[pos]);
  return 0;
}
