import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;
public class Main {
	public static void main(String[] args)throws IOException {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		long a = sc.nextLong();
		long b = sc.nextLong();
		long c = sc.nextLong();
		long k = sc.nextLong();
		long ans = 0;
		while (k != 0) {
			if (k != 0 && a <= k) {
				ans = ans + a;
				k = k - a;
			} else if (k != 0 && a > k) {
				ans = ans + k;
				k = 0;
			}
			if (k != 0 && b <= k) {
				k = k - b;
			} else if (k != 0 && b > k) {
				k = 0;
			}
			if (k != 0 && c <= k) {
				ans = ans + (-1) * c;
				k = k - c;
			} else if (k != 0 && c > k) {
				ans = ans - k;
				k = 0;
			}
		}
		System.out.println(ans);


	}
}





class FastReader {
	BufferedReader br;
	StringTokenizer st;

	public FastReader() {
		br = new BufferedReader(new
		                        InputStreamReader(System.in));
	}

	String next() {
		while (st == null || !st.hasMoreElements()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		}
		return st.nextToken();
	}

	int nextInt() {
		return Integer.parseInt(next());
	}

	long nextLong() {
		return Long.parseLong(next());
	}

	double nextDouble() {
		return Double.parseDouble(next());
	}

	String nextLine() {
		String str = "";
		try {
			str = br.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return str;
	}
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io import java.io.PrintWriter; PrintWriter java.io import java.util.*; util.* java public class Main {
	public static void main(String[] args)throws IOException {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		long a = sc.nextLong();
		long b = sc.nextLong();
		long c = sc.nextLong();
		long k = sc.nextLong();
		long ans = 0;
		while (k != 0) {
			if (k != 0 && a <= k) {
				ans = ans + a;
				k = k - a;
			} else if (k != 0 && a > k) {
				ans = ans + k;
				k = 0;
			}
			if (k != 0 && b <= k) {
				k = k - b;
			} else if (k != 0 && b > k) {
				k = 0;
			}
			if (k != 0 && c <= k) {
				ans = ans + (-1) * c;
				k = k - c;
			} else if (k != 0 && c > k) {
				ans = ans - k;
				k = 0;
			}
		}
		System.out.println(ans);


	}
} Main public static void main(String[] args)throws IOException {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		long a = sc.nextLong();
		long b = sc.nextLong();
		long c = sc.nextLong();
		long k = sc.nextLong();
		long ans = 0;
		while (k != 0) {
			if (k != 0 && a <= k) {
				ans = ans + a;
				k = k - a;
			} else if (k != 0 && a > k) {
				ans = ans + k;
				k = 0;
			}
			if (k != 0 && b <= k) {
				k = k - b;
			} else if (k != 0 && b > k) {
				k = 0;
			}
			if (k != 0 && c <= k) {
				ans = ans + (-1) * c;
				k = k - c;
			} else if (k != 0 && c > k) {
				ans = ans - k;
				k = 0;
			}
		}
		System.out.println(ans);


	} main {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		long a = sc.nextLong();
		long b = sc.nextLong();
		long c = sc.nextLong();
		long k = sc.nextLong();
		long ans = 0;
		while (k != 0) {
			if (k != 0 && a <= k) {
				ans = ans + a;
				k = k - a;
			} else if (k != 0 && a > k) {
				ans = ans + k;
				k = 0;
			}
			if (k != 0 && b <= k) {
				k = k - b;
			} else if (k != 0 && b > k) {
				k = 0;
			}
			if (k != 0 && c <= k) {
				ans = ans + (-1) * c;
				k = k - c;
			} else if (k != 0 && c > k) {
				ans = ans - k;
				k = 0;
			}
		}
		System.out.println(ans);


	} FastReader sc = new FastReader(); sc new FastReader() PrintWriter pw = new PrintWriter(System.out); pw new PrintWriter(System.out) long a = sc.nextLong(); a sc.nextLong() sc.nextLong sc long b = sc.nextLong(); b sc.nextLong() sc.nextLong sc long c = sc.nextLong(); c sc.nextLong() sc.nextLong sc long k = sc.nextLong(); k sc.nextLong() sc.nextLong sc long ans = 0; ans 0 while (k != 0) {
			if (k != 0 && a <= k) {
				ans = ans + a;
				k = k - a;
			} else if (k != 0 && a > k) {
				ans = ans + k;
				k = 0;
			}
			if (k != 0 && b <= k) {
				k = k - b;
			} else if (k != 0 && b > k) {
				k = 0;
			}
			if (k != 0 && c <= k) {
				ans = ans + (-1) * c;
				k = k - c;
			} else if (k != 0 && c > k) {
				ans = ans - k;
				k = 0;
			}
		} k != 0 k 0 {
			if (k != 0 && a <= k) {
				ans = ans + a;
				k = k - a;
			} else if (k != 0 && a > k) {
				ans = ans + k;
				k = 0;
			}
			if (k != 0 && b <= k) {
				k = k - b;
			} else if (k != 0 && b > k) {
				k = 0;
			}
			if (k != 0 && c <= k) {
				ans = ans + (-1) * c;
				k = k - c;
			} else if (k != 0 && c > k) {
				ans = ans - k;
				k = 0;
			}
		} if (k != 0 && a <= k) {
				ans = ans + a;
				k = k - a;
			} else if (k != 0 && a > k) {
				ans = ans + k;
				k = 0;
			} k != 0 && a <= k k != 0 k 0 a <= k a k {
				ans = ans + a;
				k = k - a;
			} ans = ans + a ans ans + a ans a k = k - a k k - a k a if (k != 0 && a > k) {
				ans = ans + k;
				k = 0;
			} k != 0 && a > k k != 0 k 0 a > k a k {
				ans = ans + k;
				k = 0;
			} ans = ans + k ans ans + k ans k k = 0 k 0 if (k != 0 && b <= k) {
				k = k - b;
			} else if (k != 0 && b > k) {
				k = 0;
			} k != 0 && b <= k k != 0 k 0 b <= k b k {
				k = k - b;
			} k = k - b k k - b k b if (k != 0 && b > k) {
				k = 0;
			} k != 0 && b > k k != 0 k 0 b > k b k {
				k = 0;
			} k = 0 k 0 if (k != 0 && c <= k) {
				ans = ans + (-1) * c;
				k = k - c;
			} else if (k != 0 && c > k) {
				ans = ans - k;
				k = 0;
			} k != 0 && c <= k k != 0 k 0 c <= k c k {
				ans = ans + (-1) * c;
				k = k - c;
			} ans = ans + (-1) * c ans ans + (-1) * c ans (-1) * c (-1) 1 c k = k - c k k - c k c if (k != 0 && c > k) {
				ans = ans - k;
				k = 0;
			} k != 0 && c > k k != 0 k 0 c > k c k {
				ans = ans - k;
				k = 0;
			} ans = ans - k ans ans - k ans k k = 0 k 0 System.out.println(ans) System.out.println System.out System System.out ans String[] args args class FastReader {
	BufferedReader br;
	StringTokenizer st;

	public FastReader() {
		br = new BufferedReader(new
		                        InputStreamReader(System.in));
	}

	String next() {
		while (st == null || !st.hasMoreElements()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		}
		return st.nextToken();
	}

	int nextInt() {
		return Integer.parseInt(next());
	}

	long nextLong() {
		return Long.parseLong(next());
	}

	double nextDouble() {
		return Double.parseDouble(next());
	}

	String nextLine() {
		String str = "";
		try {
			str = br.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return str;
	}
} FastReader BufferedReader br; br StringTokenizer st; st public FastReader() {
		br = new BufferedReader(new
		                        InputStreamReader(System.in));
	} FastReader {
		br = new BufferedReader(new
		                        InputStreamReader(System.in));
	} br = new BufferedReader(new
		                        InputStreamReader(System.in)) br new BufferedReader(new
		                        InputStreamReader(System.in)) String next() {
		while (st == null || !st.hasMoreElements()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		}
		return st.nextToken();
	} next {
		while (st == null || !st.hasMoreElements()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		}
		return st.nextToken();
	} while (st == null || !st.hasMoreElements()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		} st == null || !st.hasMoreElements() st == null st null !st.hasMoreElements() st.hasMoreElements() st.hasMoreElements st {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		} try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			} catch (IOException  e) {
				e.printStackTrace();
			} IOException  e {
				e.printStackTrace();
			} e.printStackTrace() e.printStackTrace e {
				st = new StringTokenizer(br.readLine());
			} st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return st.nextToken(); st.nextToken() st.nextToken st int nextInt() {
		return Integer.parseInt(next());
	} nextInt {
		return Integer.parseInt(next());
	} return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next long nextLong() {
		return Long.parseLong(next());
	} nextLong {
		return Long.parseLong(next());
	} return Long.parseLong(next()); Long.parseLong(next()) Long.parseLong Long next() next double nextDouble() {
		return Double.parseDouble(next());
	} nextDouble {
		return Double.parseDouble(next());
	} return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next String nextLine() {
		String str = "";
		try {
			str = br.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return str;
	} nextLine {
		String str = "";
		try {
			str = br.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return str;
	} String str = ""; str "" try {
			str = br.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} IOException e {
			e.printStackTrace();
		} e.printStackTrace() e.printStackTrace e {
			str = br.readLine();
		} str = br.readLine() str br.readLine() br.readLine br return str; str public class Main {
	public static void main(String[] args)throws IOException {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		long a = sc.nextLong();
		long b = sc.nextLong();
		long c = sc.nextLong();
		long k = sc.nextLong();
		long ans = 0;
		while (k != 0) {
			if (k != 0 && a <= k) {
				ans = ans + a;
				k = k - a;
			} else if (k != 0 && a > k) {
				ans = ans + k;
				k = 0;
			}
			if (k != 0 && b <= k) {
				k = k - b;
			} else if (k != 0 && b > k) {
				k = 0;
			}
			if (k != 0 && c <= k) {
				ans = ans + (-1) * c;
				k = k - c;
			} else if (k != 0 && c > k) {
				ans = ans - k;
				k = 0;
			}
		}
		System.out.println(ans);


	}
} public class Main {
	public static void main(String[] args)throws IOException {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		long a = sc.nextLong();
		long b = sc.nextLong();
		long c = sc.nextLong();
		long k = sc.nextLong();
		long ans = 0;
		while (k != 0) {
			if (k != 0 && a <= k) {
				ans = ans + a;
				k = k - a;
			} else if (k != 0 && a > k) {
				ans = ans + k;
				k = 0;
			}
			if (k != 0 && b <= k) {
				k = k - b;
			} else if (k != 0 && b > k) {
				k = 0;
			}
			if (k != 0 && c <= k) {
				ans = ans + (-1) * c;
				k = k - c;
			} else if (k != 0 && c > k) {
				ans = ans - k;
				k = 0;
			}
		}
		System.out.println(ans);


	}
} Main
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;
public class Main {
	public static void main(String[] args)throws IOException {
		FastReader sc = new FastReader();
		PrintWriter pw = new PrintWriter(System.out);
		long a = sc.nextLong();
		long b = sc.nextLong();
		long c = sc.nextLong();
		long k = sc.nextLong();
		long ans = 0;
		while (k != 0) {
			if (k != 0 && a <= k) {
				ans = ans + a;
				k = k - a;
			} else if (k != 0 && a > k) {
				ans = ans + k;
				k = 0;
			}
			if (k != 0 && b <= k) {
				k = k - b;
			} else if (k != 0 && b > k) {
				k = 0;
			}
			if (k != 0 && c <= k) {
				ans = ans + (-1) * c;
				k = k - c;
			} else if (k != 0 && c > k) {
				ans = ans - k;
				k = 0;
			}
		}
		System.out.println(ans);


	}
}





class FastReader {
	BufferedReader br;
	StringTokenizer st;

	public FastReader() {
		br = new BufferedReader(new
		                        InputStreamReader(System.in));
	}

	String next() {
		while (st == null || !st.hasMoreElements()) {
			try {
				st = new StringTokenizer(br.readLine());
			} catch (IOException  e) {
				e.printStackTrace();
			}
		}
		return st.nextToken();
	}

	int nextInt() {
		return Integer.parseInt(next());
	}

	long nextLong() {
		return Long.parseLong(next());
	}

	double nextDouble() {
		return Double.parseDouble(next());
	}

	String nextLine() {
		String str = "";
		try {
			str = br.readLine();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return str;
	}
}