1.0 200.0 200.0
 0.2 0.1 0.6
 1.9 3.0 4.1
 51.8 51.8 7.1
 113.9 125.2 88.8
 1.9 4.8 3.9
 2.2 148.1 138.0
 1.0 200.0 1.0
 1.7 4.5 4.2
 0.2 0.6 0.3
 200.0 200.0 0.1
 3.9 0.2 3.8
 7.0 131.1 7.4
 4.6 4.4 2.3
 2.0 1.1 2.4
 2.4 3.8 2.7
 0.1 0.5 0.2
 1.8 0.4 2.7
 1.1 1.1 1.1
 3.7 2.2 4.8
 3.9 2.1 4.5
 1.0 1.0 200.0
 104.6 184.4 82.3
 149.4 15.5 82.0
 0.5 0.5 0.6
 1.1 1.5 1.0
 0.3 0.4 0.4
 0.3 0.5 0.6
 0.2 0.2 0.5
 1.0 1.0 1.0
 0.2 0.7 0.6
 144.0 70.4 148.1
 25.9 77.0 144.8
 0.9 1.0 0.1
 0.5 0.3 0.2
 2.0 1.0 4.0
 4.0 2.0 1.0
 1.0 2.0 4.0
 0.5 0.5 0.1
 0.6 0.2 0.5
 185.9 9.6 163.4
 0.8 0.3 0.6
 200.0 1.0 200.0
 1.1 3.1 4.9
 3.7 3.7 4.1
 0.1 0.2 0.6
 1.5 1.3 0.1
 4.6 2.1 1.6
 0.1 200.0 0.1
 1.0 0.3 1.1
 0.3 0.3 0.5
 0.1 0.1 0.4
 55.5 159.4 140.3
 4.4 3.7 3.4
 200.0 1.0 1.0
 0.1 1.4 0.3
 1.4 0.5 0.8
 1.1 1.5 0.4
 51.5 156.3 145.1
 0.1 0.3 0.5
 153.9 122.1 89.5
 1.8 1.8 2.1
 0.5 0.1 0.9
 0.6 0.6 1.1
 4.6 3.0 3.4
 0.1 0.4 0.3
 0.6 0.3 0.2
 196.9 3.0 4.1
 3.0 3.0 3.1
 4.4 0.5 2.0
 4.5 1.3 4.8
 64.6 117.1 81.6
 117.4 68.8 137.7
 141.1 108.1 14.9
 81.7 171.9 4.4
 0.2 0.3 0.1
 156.9 154.8 73.9
 1.5 1.4 1.1
 0.4 1.1 0.9
 0.4 1.1 0.8
 0.1 200.0 200.0
 0.5 0.3 0.1
 1.0 2.0 1.0
 1.4 1.1 1.0
 0.7 1.4 0.4
 28.9 39.3 148.4
 1.7 1.9 4.4
 0.5 0.8 0.3
 200.0 0.1 0.1
 0.5 0.2 0.2
 0.6 0.4 0.3
 0.9 1.2 0.2
 4.3 2.4 4.9
 0.9 2.0 4.8
 189.4 63.7 63.4
 38.7 142.2 89.8
 0.3 0.4 0.1
 1.9 1.1 4.8
 0.4 0.1 0.6
 4.2 1.1 1.2
 1.5 1.7 2.5
 184.1 118.5 129.5
 200.0 200.0 200.0
 0.5 0.4 0.5
 1.2 0.7 1.3
 3.9 4.3 3.4
 193.9 40.7 19.7
 0.5 0.2 0.3
 36.9 51.1 4.8
 0.2 0.1 0.2
 0.2 0.6 0.4
 0.1 0.1 200.0
 0.9 4.6 3.4
 2.0 4.0 1.0
 0.2 0.3 0.2
 0.4 1.0 1.5
 1.4 1.2 1.4
 1.2 0.6 0.5
 2.0 2.1 2.2
 0.1 0.2 0.3
 0.8 0.4 1.4
 1.4 0.3 1.4
 4.0 1.0 2.0
 0.1 0.5 0.4
 0.4 0.2 0.3
 4.0 0.4 3.1
 200.0 0.1 200.0
 1.0 4.0 2.0
 0.3 0.4 1.2
 94.5 56.3 59.8
 1.4 0.8 0.9
 200.0 200.0 1.0
 1.4 0.8 0.2
 3.9 0.7 4.7
 144.6 103.0 193.4
 0.5 0.1 0.3
 0.1 0.4 0.2
 0.1 0.1 0.1
 1.2 0.5 1.2
 198.7 23.7 89.1
 139.3 87.4 129.9
 4.1 3.5 4.5
 2.2 3.1 3.0
 91.8 170.4 7.7
 41.7 104.5 74.2

y^z^x
 (z^x)^y
 x^y^z
 z^x^y
 z^x^y
 x^z^y
 x^z^y
 y^x^z
 x^z^y
 (y^x)^z
 (x^y)^z
 x^z^y
 x^z^y
 z^y^x
 (z^x)^y
 x^z^y
 (y^x)^z
 z^x^y
 (x^y)^z
 y^x^z
 y^x^z
 z^x^y
 z^x^y
 y^z^x
 (z^x)^y
 y^x^z
 (y^x)^z
 (z^x)^y
 (z^x)^y
 x^y^z
 (y^x)^z
 y^x^z
 x^y^z
 y^x^z
 (x^y)^z
 x^z^y
 x^y^z
 y^z^x
 (x^y)^z
 (x^y)^z
 y^z^x
 (x^y)^z
 x^z^y
 x^y^z
 x^y^z
 (z^x)^y
 x^y^z
 z^y^x
 y^x^z
 z^x^y
 (z^x)^y
 (z^x)^y
 x^z^y
 z^y^x
 x^y^z
 y^z^x
 x^z^y
 y^x^z
 x^z^y
 (z^x)^y
 z^y^x
 (z^x)^y
 (z^x)^y
 z^x^y
 y^z^x
 (y^x)^z
 (x^y)^z
 y^z^x
 x^y^z
 x^z^y
 y^x^z
 x^z^y
 y^x^z
 z^y^x
 z^x^y
 (y^x)^z
 z^y^x
 (x^y)^z
 y^z^x
 y^z^x
 (y^x)^z
 (x^y)^z
 y^x^z
 x^y^z
 y^x^z
 x^y^z
 x^y^z
 (y^x)^z
 x^y^z
 (x^y)^z
 (x^y)^z
 y^x^z
 y^x^z
 (y^x)^z
 z^y^x
 x^z^y
 (y^x)^z
 x^z^y
 (z^x)^y
 (x^y)^z
 (z^x)^y
 y^z^x
 x^y^z
 (x^y)^z
 z^x^y
 z^x^y
 z^y^x
 (x^y)^z
 z^x^y
 (x^y)^z
 (y^x)^z
 z^x^y
 (z^x)^y
 x^y^z
 (y^x)^z
 z^y^x
 (x^y)^z
 x^y^z
 x^z^y
 (z^x)^y
 z^x^y
 x^z^y
 x^z^y
 (y^x)^z
 (x^y)^z
 x^z^y
 (x^y)^z
 y^z^x
 z^y^x
 y^z^x
 x^z^y
 x^y^z
 x^y^z
 (x^y)^z
 y^x^z
 (x^y)^z
 (y^x)^z
 (x^y)^z
 x^z^y
 y^z^x
 y^z^x
 y^x^z
 x^z^y
 z^x^y
 x^z^y

import java.math.*;
import java.io.*;
import java.util.*;
public class C621D{
   public static long[] cAr, div;
   public static int N,M,K;
   public static int[] numCycle;
   public static Map<Integer,Set<Integer>> map;
   public static long MOD = 1000000007;
   public static void main(String[] args) throws IOException{
      InputReader in=new InputReader(new InputStreamReader(System.in));
      PrintWriter out=new PrintWriter(new BufferedOutputStream(System.out));
      double[] ar=in.nextDoubleAr();
      double x=ar[0];
      double y=ar[1];
      double z=ar[2];
      double max=-Double.MAX_VALUE;
      boolean bool=false;
      if(x+y+z<10) bool=true;
      String exp="";
      
      {
         double value=z*Math.log10(y)+Math.log10(Math.log10(x));
         if(bool) value=Math.pow(x,Math.pow(y,z));
         if(value>max){max=value; exp="x^y^z";}
      }
      
      { 
         double value=y*Math.log10(z)+Math.log10(Math.log10(x));
         if(bool) value=Math.pow(x,Math.pow(z,y));
         if(value>max){max=value; exp="x^z^y";}
      }
      
      { 
         double value=Math.log10(y*z*Math.log10(x));
         if(bool) value=Math.pow(x,y*z);
         if(value>max){max=value; exp="(x^y)^z";}
      }
      
      { 
         double value=z*Math.log10(x)+Math.log10(Math.log10(y));
         if(bool) value=Math.pow(y,Math.pow(x,z));
         if(value>max){max=value; exp="y^x^z";}
      }
      
      { 
         double value=x*Math.log10(z)+Math.log10(Math.log10(y));
         if(bool) value=Math.pow(y,Math.pow(z,x));
         if(value>max){max=value; exp="y^z^x";}
      }
      
      { 
         double value=Math.log10(x*z*Math.log10(y));
         if(bool) value=Math.pow(y,x*z);
         if(value>max){max=value; exp="(y^x)^z";}
      }
      
      { 
         double value=y*Math.log10(x)+Math.log10(Math.log10(z));
         if(bool) value=Math.pow(z,Math.pow(x,y));
         if(value>max){max=value; exp="z^x^y";}
      }
      { 
         double value=x*Math.log10(y)+Math.log10(Math.log10(z));
         if(bool) value=Math.pow(z,Math.pow(y,x));
         if(value>max){max=value; exp="z^y^x";}
      }
      
      { 
         double value=Math.log10(x*y*Math.log10(z));
         if(bool) value=Math.pow(z,x*y);
         if(value>max){max=value; exp="(z^x)^y";}
      }
      
      System.out.println(exp);
   }
   
   public static void setUpChoose(int t){
      cAr=new long[t+1];
      div=new long[t+1];
      cAr[0]=1;
      div[0]=1;
      
      for(int x=1;x<=t;x++){
         cAr[x]=(x*cAr[x-1])%(MOD);
         div[x]=pow(cAr[x],MOD-2);} 
   }
   
   public static long choose(int x,int y){
      long a=cAr[x+y];
      long b=div[x];
      long c=div[y];
      a=(a*b)%MOD;
      a=(a*c)%MOD;
      return a;
   } 
   
   public static long pow(long a,long b){
      if(b==1) 
         return a;
      long c=b/2;
      long temp=pow(a,c)%MOD;
      temp=(temp*temp)%MOD;
      if(b%2==1) temp=temp*a;
      return temp%MOD;
   }
}

class InputReader{
   private BufferedReader br;
   public InputReader(InputStreamReader in){
      br=new BufferedReader(in);
   }
   public int nextInt(){
      try{
         return Integer.parseInt(br.readLine());}
      catch(IOException e){throw new InputMismatchException();}
   }
   public int[] nextIntAr(){
      try{
         String[] s=br.readLine().split(" ");
         int[] ret=new int[s.length];
         for(int x=0;x<s.length;x++)
            ret[x]=Integer.parseInt(s[x]);
         return ret;}
         
      catch(IOException e){throw new InputMismatchException();}
   }
   
   public long nextLong(){
      try{
         return Long.parseLong(br.readLine());}
      catch(IOException e){throw new InputMismatchException();}
   }
   
   public long[] nextLongAr(){
      try{
         String[] s=br.readLine().split(" ");
         long[] ret=new long[s.length];
         for(int x=0;x<s.length;x++)
            ret[x]=Long.parseLong(s[x]);
         return ret;}
         
      catch(IOException e){throw new InputMismatchException();}
   }
   
   public double[] nextDoubleAr(){
      try{
         String[] s=br.readLine().split(" ");
         double[] ret=new double[s.length];
         for(int x=0;x<s.length;x++)
            ret[x]=Double.parseDouble(s[x]);
         return ret;}
         
      catch(IOException e){throw new InputMismatchException();}
   }
   
   public String[] nextStringAr(){
      try{
         return br.readLine().split(" ");}
         
      catch(IOException e){throw new InputMismatchException();}
   }
   
   public String nextString(){
      try{
         return br.readLine();}
         
      catch(IOException e){throw new InputMismatchException();}
   }
}
   
class Pair implements Comparable<Pair>{
   long a;
   long b;
   
   public Pair(long ma, long mb){
      a = ma;
      b = mb;
   }
   
   public int compareTo(Pair o){
      if(a == o.a){
         if(b==o.b) 
            return 0;
         return b<o.b?-1:1;
      }
      return a<o.a?-1:1;
   }
}