import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		long[] A = new long[N + 1];
		long[] B = new long[N];
		for(int i = 0; i < N + 1; i++) {
			A[i] = sc.nextLong();
		}
		for(int i = 0; i < N; i++) {
			B[i] = sc.nextLong();
		}
		sc.close();
		long ans = 0L;
		for(int i = 0; i < N; i++) {
			// 勇者B[i]がモンスターA[i]を倒せる数
			long hit = Math.min(A[i], B[i]);
			// モンスターA[i]の残数
			// A[i] -= hit;
			// 勇者B[i]の残機
			B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
			// 勇者B[i]がモンスターA[i + 1]を倒せる数
			hit = Math.min(A[i + 1], B[i]);
			// モンスターA[i + 1]の残数
			A[i + 1] -= hit;
			// 勇者B[i]の残機
			// B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
		}
		System.out.println(ans);
	}
} import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		long[] A = new long[N + 1];
		long[] B = new long[N];
		for(int i = 0; i < N + 1; i++) {
			A[i] = sc.nextLong();
		}
		for(int i = 0; i < N; i++) {
			B[i] = sc.nextLong();
		}
		sc.close();
		long ans = 0L;
		for(int i = 0; i < N; i++) {
			// 勇者B[i]がモンスターA[i]を倒せる数
			long hit = Math.min(A[i], B[i]);
			// モンスターA[i]の残数
			// A[i] -= hit;
			// 勇者B[i]の残機
			B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
			// 勇者B[i]がモンスターA[i + 1]を倒せる数
			hit = Math.min(A[i + 1], B[i]);
			// モンスターA[i + 1]の残数
			A[i + 1] -= hit;
			// 勇者B[i]の残機
			// B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
		}
		System.out.println(ans);
	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		long[] A = new long[N + 1];
		long[] B = new long[N];
		for(int i = 0; i < N + 1; i++) {
			A[i] = sc.nextLong();
		}
		for(int i = 0; i < N; i++) {
			B[i] = sc.nextLong();
		}
		sc.close();
		long ans = 0L;
		for(int i = 0; i < N; i++) {
			// 勇者B[i]がモンスターA[i]を倒せる数
			long hit = Math.min(A[i], B[i]);
			// モンスターA[i]の残数
			// A[i] -= hit;
			// 勇者B[i]の残機
			B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
			// 勇者B[i]がモンスターA[i + 1]を倒せる数
			hit = Math.min(A[i + 1], B[i]);
			// モンスターA[i + 1]の残数
			A[i + 1] -= hit;
			// 勇者B[i]の残機
			// B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
		}
		System.out.println(ans);
	} main {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		long[] A = new long[N + 1];
		long[] B = new long[N];
		for(int i = 0; i < N + 1; i++) {
			A[i] = sc.nextLong();
		}
		for(int i = 0; i < N; i++) {
			B[i] = sc.nextLong();
		}
		sc.close();
		long ans = 0L;
		for(int i = 0; i < N; i++) {
			// 勇者B[i]がモンスターA[i]を倒せる数
			long hit = Math.min(A[i], B[i]);
			// モンスターA[i]の残数
			// A[i] -= hit;
			// 勇者B[i]の残機
			B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
			// 勇者B[i]がモンスターA[i + 1]を倒せる数
			hit = Math.min(A[i + 1], B[i]);
			// モンスターA[i + 1]の残数
			A[i + 1] -= hit;
			// 勇者B[i]の残機
			// B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
		}
		System.out.println(ans);
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc long[] A = new long[N + 1]; A new long[N + 1] N + 1 N 1 long[] B = new long[N]; B new long[N] N for(int i = 0; i < N + 1; i++) {
			A[i] = sc.nextLong();
		} int i = 0; int i = 0; i 0 i < N + 1 i N + 1 N 1 i++ i++ i {
			A[i] = sc.nextLong();
		} {
			A[i] = sc.nextLong();
		} A[i] = sc.nextLong() A[i] A i sc.nextLong() sc.nextLong sc for(int i = 0; i < N; i++) {
			B[i] = sc.nextLong();
		} int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
			B[i] = sc.nextLong();
		} {
			B[i] = sc.nextLong();
		} B[i] = sc.nextLong() B[i] B i sc.nextLong() sc.nextLong sc sc.close() sc.close sc long ans = 0L; ans 0L for(int i = 0; i < N; i++) {
			// 勇者B[i]がモンスターA[i]を倒せる数
			long hit = Math.min(A[i], B[i]);
			// モンスターA[i]の残数
			// A[i] -= hit;
			// 勇者B[i]の残機
			B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
			// 勇者B[i]がモンスターA[i + 1]を倒せる数
			hit = Math.min(A[i + 1], B[i]);
			// モンスターA[i + 1]の残数
			A[i + 1] -= hit;
			// 勇者B[i]の残機
			// B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
		} int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
			// 勇者B[i]がモンスターA[i]を倒せる数
			long hit = Math.min(A[i], B[i]);
			// モンスターA[i]の残数
			// A[i] -= hit;
			// 勇者B[i]の残機
			B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
			// 勇者B[i]がモンスターA[i + 1]を倒せる数
			hit = Math.min(A[i + 1], B[i]);
			// モンスターA[i + 1]の残数
			A[i + 1] -= hit;
			// 勇者B[i]の残機
			// B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
		} {
			// 勇者B[i]がモンスターA[i]を倒せる数
			long hit = Math.min(A[i], B[i]);
			// モンスターA[i]の残数
			// A[i] -= hit;
			// 勇者B[i]の残機
			B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
			// 勇者B[i]がモンスターA[i + 1]を倒せる数
			hit = Math.min(A[i + 1], B[i]);
			// モンスターA[i + 1]の残数
			A[i + 1] -= hit;
			// 勇者B[i]の残機
			// B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
		} long hit = Math.min(A[i], B[i]); hit Math.min(A[i], B[i]) Math.min Math A[i] A i B[i] B i B[i] -= hit B[i] B i hit ans += hit ans hit hit = Math.min(A[i + 1], B[i]) hit Math.min(A[i + 1], B[i]) Math.min Math A[i + 1] A i + 1 i 1 B[i] B i A[i + 1] -= hit A[i + 1] A i + 1 i 1 hit ans += hit ans hit System.out.println(ans) System.out.println System.out System System.out ans String[] args args public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		long[] A = new long[N + 1];
		long[] B = new long[N];
		for(int i = 0; i < N + 1; i++) {
			A[i] = sc.nextLong();
		}
		for(int i = 0; i < N; i++) {
			B[i] = sc.nextLong();
		}
		sc.close();
		long ans = 0L;
		for(int i = 0; i < N; i++) {
			// 勇者B[i]がモンスターA[i]を倒せる数
			long hit = Math.min(A[i], B[i]);
			// モンスターA[i]の残数
			// A[i] -= hit;
			// 勇者B[i]の残機
			B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
			// 勇者B[i]がモンスターA[i + 1]を倒せる数
			hit = Math.min(A[i + 1], B[i]);
			// モンスターA[i + 1]の残数
			A[i + 1] -= hit;
			// 勇者B[i]の残機
			// B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
		}
		System.out.println(ans);
	}
} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		long[] A = new long[N + 1];
		long[] B = new long[N];
		for(int i = 0; i < N + 1; i++) {
			A[i] = sc.nextLong();
		}
		for(int i = 0; i < N; i++) {
			B[i] = sc.nextLong();
		}
		sc.close();
		long ans = 0L;
		for(int i = 0; i < N; i++) {
			// 勇者B[i]がモンスターA[i]を倒せる数
			long hit = Math.min(A[i], B[i]);
			// モンスターA[i]の残数
			// A[i] -= hit;
			// 勇者B[i]の残機
			B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
			// 勇者B[i]がモンスターA[i + 1]を倒せる数
			hit = Math.min(A[i + 1], B[i]);
			// モンスターA[i + 1]の残数
			A[i + 1] -= hit;
			// 勇者B[i]の残機
			// B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
		}
		System.out.println(ans);
	}
} Main
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		long[] A = new long[N + 1];
		long[] B = new long[N];
		for(int i = 0; i < N + 1; i++) {
			A[i] = sc.nextLong();
		}
		for(int i = 0; i < N; i++) {
			B[i] = sc.nextLong();
		}
		sc.close();
		long ans = 0L;
		for(int i = 0; i < N; i++) {
			// 勇者B[i]がモンスターA[i]を倒せる数
			long hit = Math.min(A[i], B[i]);
			// モンスターA[i]の残数
			// A[i] -= hit;
			// 勇者B[i]の残機
			B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
			// 勇者B[i]がモンスターA[i + 1]を倒せる数
			hit = Math.min(A[i + 1], B[i]);
			// モンスターA[i + 1]の残数
			A[i + 1] -= hit;
			// 勇者B[i]の残機
			// B[i] -= hit;
			// 倒した合計の加算
			ans += hit;
		}
		System.out.println(ans);
	}
}
