#include<stdlib.h>
#include<math.h>
/* 思路
coefficient:系数 exp:指数
+10x^4
flag1:是否输出 + - 0不输出 1输出- 2 输出+
flag2:是否输出系数 0不输出 1输出
flag3:是否输出x 0不输出 1输出
flag4:是否输出^和指数 0不输出 1输出
*/
void printAsFlag(int coefficient,int exp,int flag1,int flag2,int flag3,int flag4) {
if(flag1 == 1) {
printf("%c",'-');
} else if(flag1 == 2) {
printf("%c",'+');
}
if(flag2) {
printf("%d",coefficient);
}
if(flag3) {
printf("%c",'x');
}
if(flag4) {
printf("^%d",exp);
}
}
int main() {
int i,max; //max:最高次项的次数
int a[100];
int flag1,flag2,flag3,flag4;
int first; //判断是否是第一项,为特殊情况
while(scanf("%d",&max) != EOF ){
for(i = 0; i < max+1; i++) {
scanf("%d",&a[i]);
}
first = 1;
for(i = 0; i < max+1; i++) {
if(first) {
if(a[i] > 0) {
flag1 = 0;
first = 0;
} else if(a[i] < 0) {
flag1 = 1;
first = 0;
} else {
flag1 = 0;
first = 1; //如果为0说明下一项是第一项
}
}
else{
if(a[i] > 0){
flag1 = 2;
}
else if(a[i] < 0){
flag1 = 1;
}
else{
flag1 = 0;
}
}
if((a[i] == 0 || abs(a[i]) == 1) && (max-i) != 0){ //max - i != 0是说当它是最后一项的时候,+-1是要显示的
flag2 = 0; //有个疑问是为0时而且是最后一项时会输出?后面解决;
}
else{
flag2 = 1;
}
if(max - i == 0){
flag3 = 0;
}
else{
flag3 = 1;
}
if((max - i) == 0 || (max - i) == 1){
flag4 = 0;
}
else{
flag4 = 1;
}
if(a[i] == 0){
flag1 = flag2 = flag3 = flag4 = 0;
}
printAsFlag(abs(a[i]),max - i,flag1,flag2,flag3,flag4);
}
printf("\n\n");
}
return 0;
}