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.InputStreamReader;
import java.io.IOException;
import java.util.ArrayList;
import java.io.IOError;
import java.util.Comparator;
import java.io.BufferedReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 * @author skt
 */
public class Main {
	public static void main(String[] args) {
		InputStream inputStream = System.in;
		OutputStream outputStream = System.out;
		InputReader in = new InputReader(inputStream);
		PrintWriter out = new PrintWriter(outputStream);
		TaskD solver = new TaskD();
		solver.solve(1, in, out);
		out.close();
	}
}

class TaskD {

    public void solve(int testNumber, InputReader in, PrintWriter out) {
        double[] a = new double[3];
        double minvalue = Double.MIN_VALUE;
        for (int i = 0; i < 3; i ++) {
            a[i] = in.nextDouble();
            minvalue = Math.min(minvalue, a[i]);
        }
        double base = Math.log(minvalue);
        int id = 0;
        ArrayList<Node> array1 = new ArrayList<>();
        array1.add(new Node(a[2] * Math.log(a[1]), "x^y^z", id ++));
        array1.add(new Node(a[1] * Math.log(a[2]), "x^z^y", id ++));
        array1.add(new Node(Math.log(a[1] * a[2]), "(x^y)^z", id ++));
        array1.sort((x, y) -> {
            if (x.value == y.value) {
                return x.id - y.id;
            }
            if (a[0] > 1.0) {
                return x.value < y.value ? 1 : -1;
            } else {
                return x.value < y.value ? -1 : 1;
            }
        });

        ArrayList<Node> array2 = new ArrayList<>();
        array2.add(new Node(a[2] * Math.log(a[0]), "y^x^z", id ++));
        array2.add(new Node(a[0] * Math.log(a[2]), "y^z^x", id ++));
        array2.add(new Node(Math.log(a[0] * a[2]), "(y^x)^z", id ++));
        array2.sort((x, y) -> {
            if (x.value == y.value) {
                return x.id - y.id;
            }
            if (a[1] > 1.0) {
                return x.value < y.value ? 1 : -1;
            } else {
                return x.value < y.value ? -1 : 1;
            }
        });

        ArrayList<Node> array3 = new ArrayList<>();
        array3.add(new Node(a[0] * Math.log(a[1]), "z^y^x", id ++));
        array3.add(new Node(a[1] * Math.log(a[0]), "z^x^y", id ++));
        array3.add(new Node(Math.log(a[1] * a[0]), "(z^x)^y", id ++));
        array3.sort((x, y) -> {
            if (x.value == y.value) {
                return x.id - y.id;
            }
            if (a[2] > 1.0) {
                return x.value < y.value ? 1 : -1;
            } else {
                return x.value < y.value ? -1 : 1;
            }
        });
        boolean exist = false;
        double goal = 0.0;
        String ans = "";
        if (a[0] > 1.0) {
            if (!exist) {
                goal = array1.get(0).value + Math.log(Math.log(a[0]));
                ans = array1.get(0).answer;
            } else {
                double temp = array1.get(0).value + Math.log(Math.log(a[0]));
                if (goal < temp) {
                    goal = temp;
                    ans = array1.get(0).answer;
                }
            }
            exist = true;
        }
        if (a[1] > 1.0) {
            if (!exist) {
                goal = array2.get(0).value + Math.log(Math.log(a[1]));
                ans = array2.get(0).answer;
            } else {
                double temp = array2.get(0).value + Math.log(Math.log(a[1]));
                if (goal < temp) {
                    goal = temp;
                    ans = array2.get(0).answer;
                }
            }
            exist = true;
        }
        if (a[2] > 1.0) {
            if (!exist) {
                goal = array3.get(0).value + Math.log(Math.log(a[2]));
                ans = array3.get(0).answer;
            } else {
                double temp = array3.get(0).value + Math.log(Math.log(a[2]));
                if (goal < temp) {
                    goal = temp;
                    ans = array3.get(0).answer;
                }
            }
            exist = true;
        }
        if (exist) {
            out.println(ans);
        } else {
            if (a[0] == 1.0) {
                out.println(array1.get(0).answer); return ;
            }
            if (a[1] == 1.0) {
                out.println(array2.get(0).answer); return ;
            }
            if (a[2] == 1.0) {
                out.println(array3.get(0).answer); return ;
            }
            if (a[0] < 1.0) {
                if (!exist) {
                    goal = array1.get(0).value + Math.log(Math.log(a[0]));
                    ans = array1.get(0).answer;
                } else {
                    double temp = array1.get(0).value + Math.log(Math.log(a[0]));
                    if (goal > temp) {
                        goal = temp;
                        ans = array1.get(0).answer;
                    }
                }
                exist = true;
            }
            if (a[1] > 1.0) {
                if (!exist) {
                    goal = array2.get(0).value + Math.log(Math.log(a[1]));
                    ans = array2.get(0).answer;
                } else {
                    double temp = array2.get(0).value + Math.log(Math.log(a[1]));
                    if (goal > temp) {
                        goal = temp;
                        ans = array2.get(0).answer;
                    }
                }
                exist = true;
            }
            if (a[2] > 1.0) {
                if (!exist) {
                    goal = array3.get(0).value + Math.log(Math.log(a[2]));
                    ans = array3.get(0).answer;
                } else {
                    double temp = array3.get(0).value + Math.log(Math.log(a[2]));
                    if (goal > temp) {
                        goal = temp;
                        ans = array3.get(0).answer;
                    }
                }
                exist = true;
            }
            out.println(ans);
        }
    }

    public static class Node {
        double value;
        String answer;
        int id;

        Node(double value, String answer, int id) {
            this.value = value;
            this.answer = answer;
            this.id = id;
        }
    }
}

class InputReader {
    public BufferedReader reader;
    public StringTokenizer tokenizer;

    public InputReader(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 double nextDouble() {
        return Double.parseDouble(next());
    }

}

