import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 读取多项式次数
        int n = scanner.nextInt();

        // 读取系数,顺序是a_n, a_{n-1}, ..., a_0
        int[] coefficients = new int[n + 1];
        for (int i = 0; i <= n; i++) {
            coefficients[i] = scanner.nextInt();
        }

        scanner.close();

        // 构建多项式字符串
        StringBuilder result = new StringBuilder();
        boolean isFirstTerm = true;

        // 从高次到低次处理每一项
        for (int i = 0; i <= n; i++) {
            int coefficient = coefficients[i];
            int degree = n - i; // 当前项的次数

            // 系数为0的项完全省略
            if (coefficient == 0) {
                continue;
            }

            // 处理符号
            if (isFirstTerm) {
                // 首项若系数为正,不输出前导"+"
                if (coefficient < 0) {
                    result.append("-");
                }
                isFirstTerm = false;
            } else {
                // 后续正系数项前需加"+",负系数项加"-"
                if (coefficient > 0) {
                    result.append("+");
                } else {
                    result.append("-");
                }
            }

            // 处理系数的绝对值
            int absCoeff = Math.abs(coefficient);
            // 当系数为1或-1且次数≥1时,省略系数的绝对值1
            if (!(absCoeff == 1 && degree >= 1)) {
                result.append(absCoeff);
            }

            // 处理变量部分
            if (degree > 0) {
                result.append("x");
                // 次数为1输出"x";次数≥2输出"x^k"
                if (degree > 1) {
                    result.append("^").append(degree);
                }
            }
            // 次数为0仅输出常数,这里不需要额外处理
        }

        System.out.println(result.toString());
    }
}