#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
void DisPlay(int a[MAXSIZE], int n, int first, int flag1, int flag2, int flag3, int flag4); // a[] 系数 , flag1 正负 , flag2 是否显示系数 , flag3 是否显示 X ,flag4 是否显示指数
int main(void) {
int n; // n 为最高项数
int flag1, flag2, flag3, flag4;
int a[MAXSIZE];
while (scanf_s("%d", &n) != EOF)
{
fflush(stdin);
int i;
for (i = 0; i <= n; i++)
{
scanf_s("%d", &a[i],sizeof(a[i]));
fflush(stdin);
}
int first;
first = 1;
for (i = 0; i <= n ; i++)
{
if (first) {
flag4 = 1;
flag3 = 1;
flag2 = 1;
flag1 = 1;
if ((abs(a[i]) == 1) && (i != n))
flag2 = 0;
if (i == n)
{
flag3 = 0;
flag4 = 0;
}
if (a[i] < 0) {
flag1 = 2;
}
if (a[i] == 0) {
flag4 = 0;
flag3 = 0;
flag2 = 0;
flag1 = 0;
}
DisPlay(a[i], n - i, first, flag1, flag2, flag3, flag4);
first = 0;
}
else {
flag4 = 1;
flag3 = 1;
flag2 = 1;
flag1 = 1;
if ((abs(a[i]) == 1) && (i != n))
flag2 = 0;
if (i == n)
{
flag3 = 0;
flag4 = 0;
}
if (a[i] < 0)
flag1 = 2;
if (a[i] == 0){
flag4 = 0;
flag3 = 0;
flag2 = 0;
flag1 = 0;
}
DisPlay(a[i], n - i, first, flag1, flag2, flag3, flag4);
}
}
for (i = 0; i <= n; i++)
{
a[i] = 0;
}
}
return 0;
}
void DisPlay(int coeff, int n, int first, int flag1, int flag2, int flag3, int flag4) {
if (first) {
if (flag1 == 2)
printf("-");
if (flag2 == 1)
printf("%d", coeff);
printf("%c", 'X');
printf("^%d", n);
}
else {
if (flag1 == 1)
printf("+");
else if (flag1 == 2)
{
printf("-");
}
if (flag2 == 1)
{
printf("%d", coeff);
}
if (flag3 == 1)
printf("%c", 'X');
if (flag4 == 1)
printf("^%d", n);
}
}