program secret;
var
z, a1, b1, c1, m, n: string;
a, b, c, i: integer;
begin
z:=' '; //Навіщо?(в мене був один випадок, що не виводився результат, бо треба було додати таку "пусту"
//строку на початку)
m := 'x'; //Прикольна ідея давати рядку, який буде містити х назву m (мабуть, щоб вороги не здогадались)
n := 'y'; //Те саме. (це зробив для того, щоб якщо b1=0, то m:=''(опустити))
read(a, b, c); //Читаємо а, б, с, окей
//(ви писали:"записуйте '+2х'", я так робив, і в підсумку в мене виводило "--1++2x--4y". Я вирішив видалити знак з стрічки, а порівнювати через введені числа.)
//а тут починається щось, чого я не розумію, для чого це?
//ми перетворюємо число в рядок, після того відчикрижуємо його знак
//і залишається у нас беззнаковий (такий собі модуль числа члена, причому рядковий)
str(a, a1);
if (a1[1]='-') or (a1[1]='+') then delete(a1, 1,1);
str(b, b1);
if (b1[1]='-') or (b1[1]='+') then delete(b1, 1,1);
str(c, c1);
if (c1[1]='-') or (c1[1]='+') then delete(c1, 1,1);
if a1 = '0' then a1 := ''; //як перший член 0 змінюємо його на нічого, гаразд
if b1 = '0' then //ну тут я Вашу криптозбочену логіту почав трохи розуміти
begin
b1 := '';
m := '';
end;
if c1 = '0' then
begin
c1 := '';
n := '';
end;
//і тут починається... (нагадує викладача в інституті - "забудьте все чому вас навчали в школі")
//вбиваємо одинички, додаєм знаки які позабирали напочатку (нагадує 2-х робітників СРСР,
//один викопує яму, інший тут-же закопує, обидав молодці, обидва план виконують)
if b1 = '1' then b1 := '';
if c1 = '1' then c1 := ''; // Тут я мутив так: якщо с1<0 то виходить a1+b1x--c1, а має бути +с1, тому я сперше повидаляв знаки, а потім добавив, ті які треба...
if a<0 then a1:='-'+a1;
if b<0 then b1:='-'+b1;
if c<0 then c1:='+'+c1;
if c>0 then c1:='-'+c1;
if b>0 then b1:='+'+b1;
z := a1 + b1 + m + c1 + n; //тут се збираємо докупи
if z[1]='+' then delete(z, 1,1); //і наостанок вбиваємо знак на самому початку
writeln(z); //Виводимо.
end.