import java.io.*;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StreamTokenizer in = new StreamTokenizer(br);
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));

        in.nextToken();
        int n = (int) in.nval;

        int[] a = new int[n + 1];

        for (int i = n; i >= 0; i--) {
            in.nextToken();
            a[i] = (int) in.nval;
        }

        for (int i = n; i >= 0;
                i--) { // 从最高次到0次遍历,按数学顺序输出
            // 跳过系数为0的项(比如x²项系数为0,就不输出这一项)
            if (a[i] == 0) {
                continue;
            }

            // 处理符号
            if (i == n) { // 最高次项
                if (a[i] < 0) { // 最高次项为负,输出"-"
                    out.print("-");
                }
            } else { // 非最高次项
                if (a[i] < 0) { // 负数输出"-"
                    out.print("-");
                } else { // 正数必须输出"+"
                    out.print("+");
                }
            }

            // 处理系数
            int val = Math.abs(a[i]);
            // 系数绝对值≠1 或 是常数项(i=0),才输出数字;否则不输出
            if (val != 1 || i == 0) {
                out.print(val);
            }

            // 处理x的次数格式
            if (i == 1) { // 一次项:输出"x"
                out.print("x");
            } else if (i > 1) { // 高于1次项:输出"x^次数"
                out.print("x^" + i);
            }

        }

        out.flush();
        out.close();
        br.close();

    }
}