#include<bits/stdc++.h>
using namespace std;
struct bign {
int a[1000];
int len;
bign() {
memset(a,0,sizeof(a));
len=0;
}
};
bign change(string str) {
bign c;
c.len=str.size();
for(int i=0; i<c.len; i++) {
c.a[i]=str[c.len-1-i]-'0';
}
return c;
}
int cmp(bign a,bign b) {
if(a.len>b.len) {
return 1;
} else if(a.len<b.len) {
return -1;
} else {
for(int i=0; i<a.len; i++) {
if(a.a[a.len-1-i]>b.a[a.len-1-i]) {
return 1;
} else if(a.a[a.len-1-i]<b.a[a.len-1-i]) {
return -1;
}
}
}
return 0;
}
bign add(bign a,bign b) {
bign c;
int carry=0;
for(int i=0; i<a.len||i<b.len; i++) {
int current=a.a[i]+b.a[i]+carry;
c.a[c.len++]=current%10;
carry=current/10;
}
if(carry!=0) {
c.a[c.len++]=carry;
}
return c;
}
bign sub(bign a,bign b) {
bign c;
if(cmp(a,b)==-1) {
swap(a.a,b.a);
}
for(int i=0; i<a.len||i<b.len; i++) {
if(a.a[i]<b.a[i]) {
a.a[i+1]--;
a.a[i]+=10;
}
c.a[c.len++]=a.a[i]-b.a[i];
}
while(c.a[c.len-1]==0&&c.len>1) {
c.len--;
}
return c;
}
bign mul(bign a,int b) {
bign c;
int carry=0;
for(int i=0; i<a.len; i++) {
int current=a.a[i]*b+carry;
c.a[c.len++]=current%10;
carry=current/10;
}
while(carry!=0) {
c.a[c.len++]=carry%10;
carry/=10;
}
return c;
}
bign div(bign a,int b,int& r) {
bign c;
c.len=a.len;
for(int i=a.len-1; i>=0; i--) {
r=a.a[i]+r*10;
if(r<b) {
c.a[i]=0;
} else {
c.a[i]=r/b;
r=r%b;
}
}
while(c.len>1&&c.a[c.len-1]==0) {
c.len--;
}
return c;
}
void Printf(bign a) {
for(int i=0; i<a.len; i++) {
cout<<a.a[a.len-1-i];
}
cout<<endl;
return ;
}
int main() {
string s1,s2;
int b,r;
while(cin>>s1>>s2>>b) {
bign s3,s4;
s3=change(s1);
s4=change(s2);
Printf(add(s3,s4));
Printf(sub(s3,s4));
Printf(mul(s3,b));
Printf(div(s3,b,r=0));
}
return 0;
}