const int len=2520;
int x[len]= {0,};
void normalize(int a[]) {
for (int i=0; i<len; i++) {
if(a[i]/10000>=1) {
a[i+1]=a[i+1]+a[i]/10000;
a[i]=a[i]%10000;
}
}
}
void valuate(int a[len],int b[len]) {
for(int i =0; i<len; i++) {
a[i]=b[i];
}
}
int dezero(int a[len]) {
int ret=0;
for (int k=0; k<len; k++) {
x[k]=-1;
}
for(int i=0,j=0; i<len; i++) {
if (a[i]!=0) {
x[j]=i;
j++;
ret++;
}
}
return ret;
}
void add(int a[len],int b[len] ) {
int lena=dezero(a);
for(int i=0; i<lena; i++) {
// if(x[i]==-1) {
// break;
// }
int y=b[x[i]];
b[x[i]]=(b[x[i]]+a[x[i]])%10000;
b[x[i]+1]+=(y+a[x[i]])/10000;
}
}
void mulitiply(int a,int b[len],int b1[len]) {
// int xa[len];
int xb[len];
// int t=0;
// for(int i= 0; i<len/2; i++) {
// for (int j=0, x=0 ; j<len/2; j++) {
// x=c[i+j];
// c[j+i]=(a[j]*b[i]+t+c[i+j])%10000;
// t=(a[j]*b[i]+t+x)/10000;
// int lena=dezero(a);
// valuate(xa,x);
int lenb=dezero(b);
valuate(xb,x);
// for(int i=0; i<lena||i==0; i++) {
for(int j=0; j<lenb; j++) {
b1[xb[j]]+=a*b[xb[j]];
}
// }
normalize(b1);
}
void output(int a[len]) {
int j= 0;
for(int i=len-1,num=0; i>=0; i--) {
if(a[i]!=0) {
j++;
}
if(j==1) {
printf("%d",a[i]);
j++;
continue;
}
if(j>1) {
printf("%.4d",a[i]);
}
}
// printf("\n%d",4*(j-1));
}
int main () {
int a ,b, c ,n;
int xm[len]= {1,},y[len]= {0,},z[len]= {0,};
scanf("%d %d %d %d",&a,&b,&c,&n);
for(int i=1; i<=n; i++) {
int t[len]= {0,};
mulitiply(a,xm,t);
mulitiply(b,y,t);
mulitiply(c,z,t);
add(y,z);
valuate(y,xm);
valuate(xm,t);
}
// x=a*x+b*y+c*z;
// y=t;
// z+=p;
add(xm,z);
add(y,z);
output(z);
// printf("%ld",(x+y+z));
// int a[10]={8234,31,51};
// int b[10]={3000,43};
// int c[20]={0};
// mulitiply(a,b,c);
// for(int i=9;i>=0;i--){
// printf("%.4d",c[i]);}
return 0;
}