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(""));
})();