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.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Scanner;
import java.util.StringTokenizer;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Ivan1.4 1.2 1.4

 */
public class fourthProblem {
  
    static double error=0.000000000000001;
    static int findMaxAns(double x,double y,double z){
        System.out.println((Math.pow(Math.pow(z,x), y)-Math.pow(Math.pow(x,y), z))-0.000000000000001);
        double nextVal;
        boolean found=false;
        if(x>1){
                found=true;
                maxVal=Math.log(Math.log(x))+z*Math.log(y);
                ans=1;
                nextVal=Math.log(Math.log(x))+y*Math.log(z);
                if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                    maxVal=nextVal;
                    ans=2;
                }
                nextVal=Math.log(Math.log(x))+Math.log(y)+Math.log(z);
                if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                    System.out.println("VLEGUVA "+(nextVal-maxVal));
                    maxVal=nextVal;
                    ans=3;
                }
        }
        if(y>1){
                if(!found){
                    maxVal=Math.log(Math.log(y))+z*Math.log(x);
                    ans=5;
                    found=true;
                }
                nextVal=Math.log(Math.log(y))+z*Math.log(x);
                if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                    maxVal=nextVal;
                    ans=5;
                }
                nextVal=Math.log(Math.log(y))+x*Math.log(z);
                if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                    maxVal=nextVal;
                    ans=6;
                }
                nextVal=Math.log(Math.log(y))+Math.log(x)+Math.log(z);
                if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                    maxVal=nextVal;
                    ans=7;
                }        
        }
        if(z>1){
                if(!found){
                    maxVal=Math.log(Math.log(z))+y*Math.log(x);
                    ans=9;
                    found=true;
                }
                nextVal=Math.log(Math.log(z))+y*Math.log(x);
                if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                    maxVal=nextVal;
                    ans=9;
                }
                nextVal=Math.log(Math.log(z))+x*Math.log(y);
                if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                    maxVal=nextVal;
                    ans=10;
                }
                nextVal=Math.log(Math.log(z))+Math.log(x)+Math.log(y);
                if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                    System.out.println("VLEGUVA I VO VTOROTO "+(nextVal-maxVal));
                    maxVal=nextVal;
                    ans=11;
                }                        
        }
        
        if(!found)
            return findMinAns(x,y,z);
        else
            return ans;
    }
    
    static int findMinAns(double x,double y,double z){
        double nextVal;
        maxVal=Math.pow(x, Math.pow(y,z));
        ans=1;
        nextVal=Math.pow(x, Math.pow(z,y));
        if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                maxVal=nextVal;
                ans=2;
        }
        nextVal=Math.pow(Math.pow(x, y),z);
        if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                maxVal=nextVal;
                ans=3;
        }
        nextVal=Math.pow(y, Math.pow(x,z));
        if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                maxVal=nextVal;
                ans=5;
        }  
        nextVal=Math.pow(y, Math.pow(z,x));
        if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                maxVal=nextVal;
                ans=6;
        }
        nextVal=Math.pow(Math.pow(y, x),z);
        if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                maxVal=nextVal;
                ans=7;
        }
        nextVal=Math.pow(z, Math.pow(x,y));
        if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                maxVal=nextVal;
                ans=9;
        }
        nextVal=Math.pow(z, Math.pow(y,x));
        if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                maxVal=nextVal;
                ans=10;
        }
        nextVal=Math.pow(Math.pow(z, x),y);
        if(Math.abs(nextVal-maxVal)>=error&&nextVal>maxVal){
                maxVal=nextVal;
                ans=11;
        }
        return ans;
    }
    static HashMap<Integer,String> res=new HashMap<>();
    static int ans;
    static double maxVal;
    public static void main(String[] args) throws IOException {
        res.put(1,"x^y^z");
        res.put(2,"x^z^y");
        res.put(3,"(x^y)^z");
        res.put(4,"(x^z)^y");
        res.put(5,"y^x^z");
        res.put(6,"y^z^x");
        res.put(7,"(y^x)^z");
        res.put(8,"(y^z)^x");
        res.put(9,"z^x^y");
        res.put(10,"z^y^x");
        res.put(11,"(z^x)^y");
        res.put(12,"(z^y)^x");
        Scanner sc=new Scanner(System.in);
        double x=sc.nextDouble();
        double y=sc.nextDouble();
        double z=sc.nextDouble();
        System.out.println(res.get(findMaxAns(x,y,z)));
    }
    
}

class FastReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;
        
        public FastReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }
 
        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }
        
        public int nextInt() throws IOException{
            return Integer.parseInt(next());
        }
         public long nextL() throws IOException{
            return Long.parseLong(next());
        }
    }