#include <iostream>
#include <cmath>
#include <iomanip>
#include <cstdlib>
using namespace std;
void get_term(int&,int&);
bool end_poly(int);
void print_term(int,int,int&);
double evaluate_term(int,int,int);
int main()
{
int xvalue;
int coef, exponent;
double result;
int term_count;
cout << fixed << setprecision(0);
cin >> xvalue;
while (cin)
{
term_count = 0;
result = 0;
cout << "When x = " << xvalue << endl;
get_term(coef,exponent);
while (!end_poly(exponent))
{
result = result + evaluate_term(coef,exponent,xvalue);
print_term(coef,exponent,term_count);
get_term(coef,exponent);
}
cout << " = " << result << endl << endl;
cin >> xvalue;
}
return 0;
}
void get_term(int& coefficient, int& exponent)
{
cin >> coefficient >> exponent;
return;
}
bool end_poly(int exponent)
{
if(exponent >= 0)
{
return false;
}
else
{
return true;
}
}
void print_term(int coef, int exp, int& term_count)
{
if(coef < 0)
{
cout << "- ";
coef = abs(coef);
}
if(term_count > 0)
{
if(coef != 0)
{
cout << "+ ";
}
}
if(coef > 1)
{
cout << coef;
}
if((coef > 1 || coef == 1) && exp > 1)
{
cout << "x^" << exp << " ";
}
if((coef > 1 || coef ==1) && exp ==1)
{
cout << "x ";
}
if(coef == 1 && exp == 0)
{
cout << coef << " ";
}
term_count++;
}
double evaluate_term(int coef, int exponent, int x)
{
return (pow(x,exponent) * coef);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZSA8Y3N0ZGxpYj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgZ2V0X3Rlcm0oaW50JixpbnQmKTsKYm9vbCBlbmRfcG9seShpbnQpOwp2b2lkIHByaW50X3Rlcm0oaW50LGludCxpbnQmKTsKZG91YmxlIGV2YWx1YXRlX3Rlcm0oaW50LGludCxpbnQpOwoKaW50IG1haW4oKQp7CiAgaW50IHh2YWx1ZTsKICBpbnQgY29lZiwgZXhwb25lbnQ7CiAgZG91YmxlIHJlc3VsdDsKICBpbnQgdGVybV9jb3VudDsKIAogIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDApOwogIGNpbiA+PiB4dmFsdWU7CiAKICB3aGlsZSAoY2luKQogICAgewogICAgICB0ZXJtX2NvdW50ID0gMDsKICAgICAgcmVzdWx0ID0gMDsKICAgICAgY291dCA8PCAiV2hlbiB4ID0gIiA8PCB4dmFsdWUgPDwgZW5kbDsKICAgICAgZ2V0X3Rlcm0oY29lZixleHBvbmVudCk7CiAgICAgIHdoaWxlICghZW5kX3BvbHkoZXhwb25lbnQpKQoJewoJICByZXN1bHQgPSByZXN1bHQgKyBldmFsdWF0ZV90ZXJtKGNvZWYsZXhwb25lbnQseHZhbHVlKTsKCSAgcHJpbnRfdGVybShjb2VmLGV4cG9uZW50LHRlcm1fY291bnQpOwoJICBnZXRfdGVybShjb2VmLGV4cG9uZW50KTsKCX0KICAgICAgY291dCA8PCAiID0gIiA8PCByZXN1bHQgPDwgZW5kbCA8PCBlbmRsOwogICAgICBjaW4gPj4geHZhbHVlOwogICAgfQogIHJldHVybiAwOwp9Cgp2b2lkIGdldF90ZXJtKGludCYgY29lZmZpY2llbnQsIGludCYgZXhwb25lbnQpCnsKICBjaW4gPj4gY29lZmZpY2llbnQgPj4gZXhwb25lbnQ7CiAgcmV0dXJuOwp9Cgpib29sIGVuZF9wb2x5KGludCBleHBvbmVudCkKewoJaWYoZXhwb25lbnQgPj0gMCkKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9CgllbHNlCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9Cn0KCnZvaWQgcHJpbnRfdGVybShpbnQgY29lZiwgaW50IGV4cCwgaW50JiB0ZXJtX2NvdW50KQp7CglpZihjb2VmIDwgMCkKCQl7CgkJCWNvdXQgPDwgIi0gIjsKCQkJY29lZiA9IGFicyhjb2VmKTsKCQl9CglpZih0ZXJtX2NvdW50ID4gMCkKCQl7CgkJCWlmKGNvZWYgIT0gMCkKCQkJCXsKCQkJCQljb3V0IDw8ICIrICI7CgkJCQl9CgkJfQoJaWYoY29lZiA+IDEpCgkJewoJCQljb3V0IDw8IGNvZWY7CgkJfQoJaWYoKGNvZWYgPiAxIHx8IGNvZWYgPT0gMSkgJiYgZXhwID4gMSkKCQl7CgkJCWNvdXQgPDwgInheIiA8PCBleHAgPDwgIiAiOwoJCX0KCWlmKChjb2VmID4gMSB8fCBjb2VmID09MSkgJiYgZXhwID09MSkKCQl7CgkJCWNvdXQgPDwgInggIjsKCQl9CglpZihjb2VmID09IDEgJiYgZXhwID09IDApCgkJewoJCQljb3V0IDw8IGNvZWYgPDwgIiAiOwoJCX0JCgl0ZXJtX2NvdW50Kys7Cn0KCmRvdWJsZSBldmFsdWF0ZV90ZXJtKGludCBjb2VmLCBpbnQgZXhwb25lbnQsIGludCB4KQp7CglyZXR1cm4gKHBvdyh4LGV4cG9uZW50KSAqIGNvZWYpOwp9Cg==