const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    let params = [];
    while ((line = await readline())) {
        let tokens = line.split(" ");
        // let a = parseInt(tokens[0]);
        // let b = parseInt(tokens[1]);
        // console.log(a + b);
        params.push(tokens);
    }
    // console.log(params)
    let n = parseInt(params[0][0]);
    let nums = params[1].map((v) => parseInt(v));
    // console.log(n,nums)
    let results = [];
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] != 0) {
            // 系数
            let x_n = nums.length - i - 1 == 1 ? "" : `^${nums.length - i - 1}`;
            if (i == 0) {
                if (nums[i] == 1) {
                    results.push(`x${x_n}`);
                } else if (nums[i] == -1) {
                    results.push(`-x${x_n}`);
                } else results.push(`${nums[i]}x${x_n}`);
            } else {
                // 最后一个
                if (i == nums.length - 1) {
                    if (nums[i] > 0) {
                        results.push(`+${nums[i]}`);
                    } else {
                        results.push(`${nums[i]}`);
                    }
                } else {
                    if (nums[i] > 0) {
                        if (nums[i] == 1) {
                            results.push(`+x${x_n}`);
                        } else
                            results.push(`+${nums[i]}x${x_n}`);
                    } else {
                        if (nums[i] == -1) {
                            results.push(`-x${x_n}`);
                        } else {
                            results.push(`${nums[i]}x${x_n}`);
                        }
                    }
                }
            }
        }
    }
    console.log(results.join(""));
})();