#include <cstdlib>
#include <iostream>
#include <sstream>
using namespace std;
class List{
public:
class Node{
public:
int data;
Node *next;
};
List();
List(const List&);
~List();
// List& operator=(const List&);
bool empty() const;
void insert(int data,int pos);
void erase(int pos);
void traverse();
// Node* linearSearch(int data);
void display();
Node* first;
Node* temp;
private:
int mySize;
};
List::~List(){
Node* temp;
Node* record;
record=first;
while(record->next!=NULL){
temp=record;
record=record->next;
delete temp;
}
delete record;
}
List::List():mySize(0),first(NULL){
}
List::List(const List& list){
Node *temp;
temp=list.first;
int i=0;
while(temp->next!=NULL){
this->insert(temp->data,i);
++i;
temp=temp->next;
}
this->insert(temp->data,i);
}
void List::traverse(){
Node * ptr;
ptr=first;
while(1){
if(ptr->next==NULL){
cout<<ptr->data;
break;
}
else
cout<<ptr->data<<" ";
ptr=ptr->next;
}
}
/*Node* List::linearSearch(int data){
Node* temp;
temp=first;
while(1){
if(temp->data==data)
return temp;
else
temp=temp->next;
}
}*/
bool List::empty()const{
if(mySize==0)
return true;
else
return false;
}
void List::insert(int data,int pos){
Node* ptr;
Node* temp;
Node* newnode;
newnode=new Node;
if(first==NULL){
first=newnode;
newnode->next=NULL;
newnode->data=data;
++mySize;
}
else{
if(pos==0){
newnode->next=first;
newnode->data=data;
first=newnode;
++mySize;
}
else if(pos>0&&pos<mySize){
ptr=first;
for(int i=0;i<pos-1;)
ptr=ptr->next;
temp=ptr->next;
ptr->next=newnode;
newnode->next=temp;
newnode->data=data;
++mySize;
}
else if(pos==mySize){
ptr=first;
while(ptr->next!=NULL)
ptr=ptr->next;
ptr->next=newnode;
newnode->next=NULL;
newnode->data=data;
++mySize;
}
}
}
void List::erase(int pos){
Node* preptr;
Node* deptr;
preptr=first;
for(int i=0;i<pos-2;i++)
preptr=preptr->next;
deptr=preptr->next;
preptr->next=deptr->next;
--mySize;
delete deptr;
}
int main(int argc, char *argv[])
{
char temp[10000];
while(cin.getline(temp,10000)){
List constant,x,answer;
int number,tempans=0,countofcons=0,countofx=0,countofans=0,X,tempx=1;
stringstream num(temp);
while(num>>number){
constant.insert(number,countofcons);
++countofcons;
}
cin.getline(temp,10000);
stringstream num1(temp);
while(num1>>X){
x.insert(X,countofx);
++countofx;
}
x.temp=x.first;
for(int j=0;j<countofx;++j){
tempx=1,tempans=0;
for(int i=0;i<countofcons-1;++i)
tempx=x.temp->data*tempx;
constant.temp=constant.first;
while(constant.temp->next!=NULL){
tempans=tempans+constant.temp->data*tempx;
constant.temp=constant.temp->next;
tempx=tempx/x.temp->data;
}
tempans=tempans+constant.temp->data;
constant.temp=constant.temp->next;
x.temp=x.temp->next;
answer.insert(tempans,countofans);
++countofans;
}
answer.traverse();
cout<<endl;
}
return EXIT_SUCCESS;
}
I2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHNzdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIExpc3R7CiAgICBwdWJsaWM6CiAgICAgICAgY2xhc3MgTm9kZXsKICAgICAgICAgICAgcHVibGljOgogICAgICAgICAgICAgICAgaW50IGRhdGE7CiAgICAgICAgICAgICAgICBOb2RlICpuZXh0OwogICAgICAgIH07CiAgICAgICAgTGlzdCgpOwogICAgICAgIExpc3QoY29uc3QgTGlzdCYpOwogICAgICAgIH5MaXN0KCk7CiAgICAgICAvLyBMaXN0JiBvcGVyYXRvcj0oY29uc3QgTGlzdCYpOyAgIAogICAgICAgIGJvb2wgZW1wdHkoKSBjb25zdDsKICAgICAgICB2b2lkIGluc2VydChpbnQgZGF0YSxpbnQgcG9zKTsKICAgICAgICB2b2lkIGVyYXNlKGludCBwb3MpOwogICAgICAgCiAgICAgICAgdm9pZCB0cmF2ZXJzZSgpOwogIC8vICAgICAgTm9kZSogbGluZWFyU2VhcmNoKGludCBkYXRhKTsKICAgICAgICB2b2lkIGRpc3BsYXkoKTsKICAgICAgICBOb2RlKiBmaXJzdDsKICAgICAgICBOb2RlKiB0ZW1wOwogICAgcHJpdmF0ZToKICAgICAgICAKICAgICAgICBpbnQgbXlTaXplOwp9OwpMaXN0Ojp+TGlzdCgpewogICAgTm9kZSogdGVtcDsKICAgIE5vZGUqIHJlY29yZDsKICAgIHJlY29yZD1maXJzdDsKICAgIHdoaWxlKHJlY29yZC0+bmV4dCE9TlVMTCl7CiAgICAgICAgdGVtcD1yZWNvcmQ7CiAgICAgICAgcmVjb3JkPXJlY29yZC0+bmV4dDsKICAgICAgICBkZWxldGUgdGVtcDsKICAgIH0KICAgICBkZWxldGUgcmVjb3JkOwp9Ckxpc3Q6Okxpc3QoKTpteVNpemUoMCksZmlyc3QoTlVMTCl7Cn0KTGlzdDo6TGlzdChjb25zdCBMaXN0JiBsaXN0KXsKICAgIE5vZGUgKnRlbXA7CiAgICB0ZW1wPWxpc3QuZmlyc3Q7CiAgICBpbnQgaT0wOwogICAgd2hpbGUodGVtcC0+bmV4dCE9TlVMTCl7CiAgICAgICAgdGhpcy0+aW5zZXJ0KHRlbXAtPmRhdGEsaSk7CiAgICAgICAgKytpOwogICAgICAgIHRlbXA9dGVtcC0+bmV4dDsKICAgIH0KICAgIHRoaXMtPmluc2VydCh0ZW1wLT5kYXRhLGkpOwp9CnZvaWQgTGlzdDo6dHJhdmVyc2UoKXsKICAgIE5vZGUgKiBwdHI7CiAgICBwdHI9Zmlyc3Q7CiAgICB3aGlsZSgxKXsKICAgICAgICBpZihwdHItPm5leHQ9PU5VTEwpewogICAgICAgICAgICBjb3V0PDxwdHItPmRhdGE7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0gICAgCiAgICAgICAgZWxzZQogICAgICAgICAgICBjb3V0PDxwdHItPmRhdGE8PCIgIjsKICAgICAgICBwdHI9cHRyLT5uZXh0OwogICAgfQoKfQovKk5vZGUqIExpc3Q6OmxpbmVhclNlYXJjaChpbnQgZGF0YSl7CiAgICBOb2RlKiB0ZW1wOwogICAgdGVtcD1maXJzdDsKICAgIHdoaWxlKDEpewogICAgICAgIGlmKHRlbXAtPmRhdGE9PWRhdGEpCiAgICAgICAgICAgIHJldHVybiB0ZW1wOwogICAgICAgIGVsc2UgCiAgICAgICAgICAgIHRlbXA9dGVtcC0+bmV4dDsKICAgIH0KfSovCmJvb2wgTGlzdDo6ZW1wdHkoKWNvbnN0ewogICAgaWYobXlTaXplPT0wKQogICAgICAgIHJldHVybiB0cnVlOwogICAgZWxzZSAKICAgICAgICByZXR1cm4gZmFsc2U7Cn0Kdm9pZCBMaXN0OjppbnNlcnQoaW50IGRhdGEsaW50IHBvcyl7CiAgICBOb2RlKiBwdHI7CiAgICBOb2RlKiB0ZW1wOwogICAgTm9kZSogbmV3bm9kZTsKICAgIG5ld25vZGU9bmV3IE5vZGU7CiAgICBpZihmaXJzdD09TlVMTCl7CiAgICAgICAgZmlyc3Q9bmV3bm9kZTsKICAgICAgICBuZXdub2RlLT5uZXh0PU5VTEw7CiAgICAgICAgbmV3bm9kZS0+ZGF0YT1kYXRhOwogICAgICAgICsrbXlTaXplOwogICAgfQogICAgZWxzZXsKICAgICAgICBpZihwb3M9PTApewoKICAgICAgICAgICAgbmV3bm9kZS0+bmV4dD1maXJzdDsKICAgICAgICAgICAgbmV3bm9kZS0+ZGF0YT1kYXRhOwogICAgICAgICAgICBmaXJzdD1uZXdub2RlOwogICAgICAgICAgICArK215U2l6ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihwb3M+MCYmcG9zPG15U2l6ZSl7CiAgICAgICAgICAgIHB0cj1maXJzdDsKICAgICAgICAgICAgZm9yKGludCBpPTA7aTxwb3MtMTspCiAgICAgICAgICAgICAgICBwdHI9cHRyLT5uZXh0OwogICAgICAgICAgICB0ZW1wPXB0ci0+bmV4dDsKICAgICAgICAgICAgcHRyLT5uZXh0PW5ld25vZGU7CiAgICAgICAgICAgIG5ld25vZGUtPm5leHQ9dGVtcDsKICAgICAgICAgICAgbmV3bm9kZS0+ZGF0YT1kYXRhOwogICAgICAgICAgICArK215U2l6ZTsgICAgICAgIAogICAgICAgIH0KICAgICAgICBlbHNlIGlmKHBvcz09bXlTaXplKXsKICAgICAgICAgICAgcHRyPWZpcnN0OyAgICAgICAgIAogICAgICAgICAgICB3aGlsZShwdHItPm5leHQhPU5VTEwpCiAgICAgICAgICAgICAgICBwdHI9cHRyLT5uZXh0OwogICAgICAgICAgICBwdHItPm5leHQ9bmV3bm9kZTsKICAgICAgICAgICAgbmV3bm9kZS0+bmV4dD1OVUxMOwoKICAgICAgICAgICAgbmV3bm9kZS0+ZGF0YT1kYXRhOwogICAgICAgICAgICArK215U2l6ZTsgICAgCiAgICAgICAgfQogICAgfQp9CnZvaWQgTGlzdDo6ZXJhc2UoaW50IHBvcyl7CiAgICBOb2RlKiBwcmVwdHI7CiAgICBOb2RlKiBkZXB0cjsKICAgIHByZXB0cj1maXJzdDsKICAgIGZvcihpbnQgaT0wO2k8cG9zLTI7aSsrKQogICAgICAgIHByZXB0cj1wcmVwdHItPm5leHQ7CiAgICBkZXB0cj1wcmVwdHItPm5leHQ7CiAgICBwcmVwdHItPm5leHQ9ZGVwdHItPm5leHQ7CiAgICAtLW15U2l6ZTsKICAgIGRlbGV0ZSBkZXB0cjsKfSAgICAKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogICAgCiAgICBjaGFyICB0ZW1wWzEwMDAwXTsKICAgIHdoaWxlKGNpbi5nZXRsaW5lKHRlbXAsMTAwMDApKXsKICAgICAgICBMaXN0IGNvbnN0YW50LHgsYW5zd2VyOwogICAgICAgIGludCBudW1iZXIsdGVtcGFucz0wLGNvdW50b2Zjb25zPTAsY291bnRvZng9MCxjb3VudG9mYW5zPTAsWCx0ZW1weD0xOwogICAgICAgIHN0cmluZ3N0cmVhbSBudW0odGVtcCk7CiAgICAgICAgd2hpbGUobnVtPj5udW1iZXIpewogICAgICAgICAgICBjb25zdGFudC5pbnNlcnQobnVtYmVyLGNvdW50b2Zjb25zKTsKICAgICAgICAgICAgKytjb3VudG9mY29uczsKICAgICAgICB9CiAgICAgICAgY2luLmdldGxpbmUodGVtcCwxMDAwMCk7CiAgICAgICAgc3RyaW5nc3RyZWFtIG51bTEodGVtcCk7CiAgICAgICAgd2hpbGUobnVtMT4+WCl7CiAgICAgICAgICAgIHguaW5zZXJ0KFgsY291bnRvZngpOwogICAgICAgICAgICArK2NvdW50b2Z4OwogICAgICAgIH0KICAgICAgICB4LnRlbXA9eC5maXJzdDsKICAgICAgICBmb3IoaW50IGo9MDtqPGNvdW50b2Z4Oysrail7CiAgICAgICAgICAgIHRlbXB4PTEsdGVtcGFucz0wOwogICAgICAgICAgICBmb3IoaW50IGk9MDtpPGNvdW50b2Zjb25zLTE7KytpKQogICAgICAgICAgICAgICAgdGVtcHg9eC50ZW1wLT5kYXRhKnRlbXB4OwogICAgICAgICAgICBjb25zdGFudC50ZW1wPWNvbnN0YW50LmZpcnN0OwogICAgICAgICAgICB3aGlsZShjb25zdGFudC50ZW1wLT5uZXh0IT1OVUxMKXsKICAgICAgICAgICAgICAgIHRlbXBhbnM9dGVtcGFucytjb25zdGFudC50ZW1wLT5kYXRhKnRlbXB4OwogICAgICAgICAgICAgICAgY29uc3RhbnQudGVtcD1jb25zdGFudC50ZW1wLT5uZXh0OwogICAgICAgICAgICAgICAgdGVtcHg9dGVtcHgveC50ZW1wLT5kYXRhOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRlbXBhbnM9dGVtcGFucytjb25zdGFudC50ZW1wLT5kYXRhOwogICAgICAgICAgICBjb25zdGFudC50ZW1wPWNvbnN0YW50LnRlbXAtPm5leHQ7CiAgICAgICAgICAgIHgudGVtcD14LnRlbXAtPm5leHQ7CiAgICAgICAgICAgIGFuc3dlci5pbnNlcnQodGVtcGFucyxjb3VudG9mYW5zKTsKICAgICAgICAgICAgKytjb3VudG9mYW5zOwogICAgICAgIH0KICAgICAgICBhbnN3ZXIudHJhdmVyc2UoKTsKICAgICAgICBjb3V0PDxlbmRsOwogICAgfQogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfQo=