using System;
using System.Collections.Generic;
public class Program {
public static void Main() {
int.TryParse(Console.ReadLine(), out int n);
string[] inputs = (Console.ReadLine() ?? "").Split(' ');
string parts = "";
for (int i = 0; i < inputs.Length; i++) {
int.TryParse(inputs[i], out int currInt);
if (currInt == 0) {
continue;
}
//第一个数字
if (i == 0) {
if (currInt == 1 || currInt == -1) {
string numStr = null;
if (currInt == -1) {
numStr = "-";
} else if (currInt == 1) {
numStr = "";
}
parts += $"{numStr}x^{inputs.Length - i - 1}" ;
} else {
string numStr = currInt.ToString();
parts += $"{numStr}x^{inputs.Length - i - 1}";
}
}
//最后一个数字
else if (i == inputs.Length - 1) {
string numStr = null;
if (currInt == 1) {
numStr = "+1";
parts += numStr;
} else if (currInt == -1) {
numStr = "-1";
parts += numStr;
} else {
numStr = (currInt > 0) ? ("+" + currInt.ToString()) : currInt.ToString();
parts += numStr;
}
}
//中间的数字
else {
// string numStr = (currInt > 0) ? ("+" + currInt.ToString()) : currInt.ToString();
string numStr;
if (currInt > 0) {
numStr = "+" + currInt.ToString();
} else {
numStr = currInt.ToString();
}
if (currInt == 1) {
numStr = "+";
}
if (currInt == -1) {
numStr = "-";
}
int cifang = inputs.Length - i - 1;
string suffix = "";
if (cifang == 1) {
suffix = "";
} else {
suffix = "^" + (inputs.Length - i - 1).ToString();
}
parts += $"{numStr}x{suffix}";
}
}
Console.WriteLine(parts);
}
}