import java.util.Scanner;

public class Main {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int A = sc.nextInt();
    int B = sc.nextInt();
    int C = sc.nextInt();
    int K = sc.nextInt();

  	int max = A;

  	if (max < B) {
      max = B;
    }
    if (max < C) {
      max = C;
    }
    System.out.println(A + B + C + max * ((1 << K) - 1));
  }

} import java.util.Scanner; Scanner java.util public class Main {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int A = sc.nextInt();
    int B = sc.nextInt();
    int C = sc.nextInt();
    int K = sc.nextInt();

  	int max = A;

  	if (max < B) {
      max = B;
    }
    if (max < C) {
      max = C;
    }
    System.out.println(A + B + C + max * ((1 << K) - 1));
  }

} Main public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int A = sc.nextInt();
    int B = sc.nextInt();
    int C = sc.nextInt();
    int K = sc.nextInt();

  	int max = A;

  	if (max < B) {
      max = B;
    }
    if (max < C) {
      max = C;
    }
    System.out.println(A + B + C + max * ((1 << K) - 1));
  } main {
    Scanner sc = new Scanner(System.in);
    int A = sc.nextInt();
    int B = sc.nextInt();
    int C = sc.nextInt();
    int K = sc.nextInt();

  	int max = A;

  	if (max < B) {
      max = B;
    }
    if (max < C) {
      max = C;
    }
    System.out.println(A + B + C + max * ((1 << K) - 1));
  } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int A = sc.nextInt(); A sc.nextInt() sc.nextInt sc int B = sc.nextInt(); B sc.nextInt() sc.nextInt sc int C = sc.nextInt(); C sc.nextInt() sc.nextInt sc int K = sc.nextInt(); K sc.nextInt() sc.nextInt sc int max = A; max A if (max < B) {
      max = B;
    } max < B max B {
      max = B;
    } max = B max B if (max < C) {
      max = C;
    } max < C max C {
      max = C;
    } max = C max C System.out.println(A + B + C + max * ((1 << K) - 1)) System.out.println System.out System System.out A + B + C + max * ((1 << K) - 1) C A + B + C + max * ((1 << K) - 1) A B C max * ((1 << K) - 1) max ((1 << K) - 1) (1 << K) 1 K 1 String[] args args public class Main {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int A = sc.nextInt();
    int B = sc.nextInt();
    int C = sc.nextInt();
    int K = sc.nextInt();

  	int max = A;

  	if (max < B) {
      max = B;
    }
    if (max < C) {
      max = C;
    }
    System.out.println(A + B + C + max * ((1 << K) - 1));
  }

} public class Main {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int A = sc.nextInt();
    int B = sc.nextInt();
    int C = sc.nextInt();
    int K = sc.nextInt();

  	int max = A;

  	if (max < B) {
      max = B;
    }
    if (max < C) {
      max = C;
    }
    System.out.println(A + B + C + max * ((1 << K) - 1));
  }

} Main
import java.util.Scanner;

public class Main {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int A = sc.nextInt();
    int B = sc.nextInt();
    int C = sc.nextInt();
    int K = sc.nextInt();

  	int max = A;

  	if (max < B) {
      max = B;
    }
    if (max < C) {
      max = C;
    }
    System.out.println(A + B + C + max * ((1 << K) - 1));
  }

}
