import java.util.Scanner;

public class Main {


	public static void main(String[] args) {
		(new Main()).execute();
	}
	public void execute() {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int  N = sc.nextInt();
		Long A[] = new Long[N+2] ;
		Long B[] = new Long[N+1] ;

		for( int i = 1 ; i <= N + 1; i ++ ) {
			A[i] = sc.nextLong();
		}
		for( int i = 1 ; i <= N ; i ++ ) {
			B[i] = sc.nextLong();
		}

		//
		Long yoryoku = 0L ;
		Long mCountSum = 0L ;
		for( int i = 1 ; i <= N ; i ++ ) {
			Long mCount = 0L ;//モンスターを倒してもらえる人数
			if(yoryoku <= A[i]) {//余力より多い場合
				mCount =  yoryoku ;//まず余力分を倒す
				Long nokori = A[i] - yoryoku ;//残りのモンスター数
				if(nokori <= B[i]) {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				}else {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				}
			}else {//余力より少ないモンスターなら
				mCount = A[i] ; //全滅させる
				yoryoku = B[i] ; //すべてを余力にする
			}
			mCountSum += mCount ;
		}
		//最後の町
		if(0 < yoryoku) {
			if(yoryoku <= A[N+1]) {//余力より多い場合
				mCountSum += yoryoku ;
			}else {
				mCountSum += A[N+1] ; //全滅させる
			}
		}


		System.out.println(mCountSum);
	}
} import java.util.Scanner; Scanner java.util public class Main {


	public static void main(String[] args) {
		(new Main()).execute();
	}
	public void execute() {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int  N = sc.nextInt();
		Long A[] = new Long[N+2] ;
		Long B[] = new Long[N+1] ;

		for( int i = 1 ; i <= N + 1; i ++ ) {
			A[i] = sc.nextLong();
		}
		for( int i = 1 ; i <= N ; i ++ ) {
			B[i] = sc.nextLong();
		}

		//
		Long yoryoku = 0L ;
		Long mCountSum = 0L ;
		for( int i = 1 ; i <= N ; i ++ ) {
			Long mCount = 0L ;//モンスターを倒してもらえる人数
			if(yoryoku <= A[i]) {//余力より多い場合
				mCount =  yoryoku ;//まず余力分を倒す
				Long nokori = A[i] - yoryoku ;//残りのモンスター数
				if(nokori <= B[i]) {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				}else {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				}
			}else {//余力より少ないモンスターなら
				mCount = A[i] ; //全滅させる
				yoryoku = B[i] ; //すべてを余力にする
			}
			mCountSum += mCount ;
		}
		//最後の町
		if(0 < yoryoku) {
			if(yoryoku <= A[N+1]) {//余力より多い場合
				mCountSum += yoryoku ;
			}else {
				mCountSum += A[N+1] ; //全滅させる
			}
		}


		System.out.println(mCountSum);
	}
} Main public static void main(String[] args) {
		(new Main()).execute();
	} main {
		(new Main()).execute();
	} (new Main()).execute() (new Main()).execute (new Main()) String[] args args public void execute() {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int  N = sc.nextInt();
		Long A[] = new Long[N+2] ;
		Long B[] = new Long[N+1] ;

		for( int i = 1 ; i <= N + 1; i ++ ) {
			A[i] = sc.nextLong();
		}
		for( int i = 1 ; i <= N ; i ++ ) {
			B[i] = sc.nextLong();
		}

		//
		Long yoryoku = 0L ;
		Long mCountSum = 0L ;
		for( int i = 1 ; i <= N ; i ++ ) {
			Long mCount = 0L ;//モンスターを倒してもらえる人数
			if(yoryoku <= A[i]) {//余力より多い場合
				mCount =  yoryoku ;//まず余力分を倒す
				Long nokori = A[i] - yoryoku ;//残りのモンスター数
				if(nokori <= B[i]) {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				}else {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				}
			}else {//余力より少ないモンスターなら
				mCount = A[i] ; //全滅させる
				yoryoku = B[i] ; //すべてを余力にする
			}
			mCountSum += mCount ;
		}
		//最後の町
		if(0 < yoryoku) {
			if(yoryoku <= A[N+1]) {//余力より多い場合
				mCountSum += yoryoku ;
			}else {
				mCountSum += A[N+1] ; //全滅させる
			}
		}


		System.out.println(mCountSum);
	} execute {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int  N = sc.nextInt();
		Long A[] = new Long[N+2] ;
		Long B[] = new Long[N+1] ;

		for( int i = 1 ; i <= N + 1; i ++ ) {
			A[i] = sc.nextLong();
		}
		for( int i = 1 ; i <= N ; i ++ ) {
			B[i] = sc.nextLong();
		}

		//
		Long yoryoku = 0L ;
		Long mCountSum = 0L ;
		for( int i = 1 ; i <= N ; i ++ ) {
			Long mCount = 0L ;//モンスターを倒してもらえる人数
			if(yoryoku <= A[i]) {//余力より多い場合
				mCount =  yoryoku ;//まず余力分を倒す
				Long nokori = A[i] - yoryoku ;//残りのモンスター数
				if(nokori <= B[i]) {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				}else {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				}
			}else {//余力より少ないモンスターなら
				mCount = A[i] ; //全滅させる
				yoryoku = B[i] ; //すべてを余力にする
			}
			mCountSum += mCount ;
		}
		//最後の町
		if(0 < yoryoku) {
			if(yoryoku <= A[N+1]) {//余力より多い場合
				mCountSum += yoryoku ;
			}else {
				mCountSum += A[N+1] ; //全滅させる
			}
		}


		System.out.println(mCountSum);
	} 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+2] ; A new Long[N+2] N+2 N 2 Long B[] = new Long[N+1] ; B new Long[N+1] N+1 N 1 for( int i = 1 ; i <= N + 1; i ++ ) {
			A[i] = sc.nextLong();
		} int i = 1 ; int i = 1 ; i 1 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 = 1 ; i <= N ; i ++ ) {
			B[i] = sc.nextLong();
		} int i = 1 ; int i = 1 ; i 1 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 Long yoryoku = 0L ; yoryoku 0L Long mCountSum = 0L ; mCountSum 0L for( int i = 1 ; i <= N ; i ++ ) {
			Long mCount = 0L ;//モンスターを倒してもらえる人数
			if(yoryoku <= A[i]) {//余力より多い場合
				mCount =  yoryoku ;//まず余力分を倒す
				Long nokori = A[i] - yoryoku ;//残りのモンスター数
				if(nokori <= B[i]) {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				}else {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				}
			}else {//余力より少ないモンスターなら
				mCount = A[i] ; //全滅させる
				yoryoku = B[i] ; //すべてを余力にする
			}
			mCountSum += mCount ;
		} int i = 1 ; int i = 1 ; i 1 i <= N i N i ++ i ++ i {
			Long mCount = 0L ;//モンスターを倒してもらえる人数
			if(yoryoku <= A[i]) {//余力より多い場合
				mCount =  yoryoku ;//まず余力分を倒す
				Long nokori = A[i] - yoryoku ;//残りのモンスター数
				if(nokori <= B[i]) {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				}else {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				}
			}else {//余力より少ないモンスターなら
				mCount = A[i] ; //全滅させる
				yoryoku = B[i] ; //すべてを余力にする
			}
			mCountSum += mCount ;
		} {
			Long mCount = 0L ;//モンスターを倒してもらえる人数
			if(yoryoku <= A[i]) {//余力より多い場合
				mCount =  yoryoku ;//まず余力分を倒す
				Long nokori = A[i] - yoryoku ;//残りのモンスター数
				if(nokori <= B[i]) {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				}else {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				}
			}else {//余力より少ないモンスターなら
				mCount = A[i] ; //全滅させる
				yoryoku = B[i] ; //すべてを余力にする
			}
			mCountSum += mCount ;
		} Long mCount = 0L ; mCount 0L if(yoryoku <= A[i]) {//余力より多い場合
				mCount =  yoryoku ;//まず余力分を倒す
				Long nokori = A[i] - yoryoku ;//残りのモンスター数
				if(nokori <= B[i]) {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				}else {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				}
			}else {//余力より少ないモンスターなら
				mCount = A[i] ; //全滅させる
				yoryoku = B[i] ; //すべてを余力にする
			} yoryoku <= A[i] yoryoku A[i] A i {//余力より多い場合
				mCount =  yoryoku ;//まず余力分を倒す
				Long nokori = A[i] - yoryoku ;//残りのモンスター数
				if(nokori <= B[i]) {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				}else {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				}
			} mCount =  yoryoku mCount yoryoku Long nokori = A[i] - yoryoku ; nokori A[i] - yoryoku A[i] A i yoryoku if(nokori <= B[i]) {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				}else {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				} nokori <= B[i] nokori B[i] B i {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				} mCount = A[i] mCount A[i] A i yoryoku = B[i] - nokori yoryoku B[i] - nokori B[i] B i nokori {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				} mCount += B[i] mCount B[i] B i yoryoku = 0L yoryoku 0L {//余力より少ないモンスターなら
				mCount = A[i] ; //全滅させる
				yoryoku = B[i] ; //すべてを余力にする
			} mCount = A[i] mCount A[i] A i yoryoku = B[i] yoryoku B[i] B i mCountSum += mCount mCountSum mCount if(0 < yoryoku) {
			if(yoryoku <= A[N+1]) {//余力より多い場合
				mCountSum += yoryoku ;
			}else {
				mCountSum += A[N+1] ; //全滅させる
			}
		} 0 < yoryoku 0 yoryoku {
			if(yoryoku <= A[N+1]) {//余力より多い場合
				mCountSum += yoryoku ;
			}else {
				mCountSum += A[N+1] ; //全滅させる
			}
		} if(yoryoku <= A[N+1]) {//余力より多い場合
				mCountSum += yoryoku ;
			}else {
				mCountSum += A[N+1] ; //全滅させる
			} yoryoku <= A[N+1] yoryoku A[N+1] A N+1 N 1 {//余力より多い場合
				mCountSum += yoryoku ;
			} mCountSum += yoryoku mCountSum yoryoku {
				mCountSum += A[N+1] ; //全滅させる
			} mCountSum += A[N+1] mCountSum A[N+1] A N+1 N 1 System.out.println(mCountSum) System.out.println System.out System System.out mCountSum public class Main {


	public static void main(String[] args) {
		(new Main()).execute();
	}
	public void execute() {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int  N = sc.nextInt();
		Long A[] = new Long[N+2] ;
		Long B[] = new Long[N+1] ;

		for( int i = 1 ; i <= N + 1; i ++ ) {
			A[i] = sc.nextLong();
		}
		for( int i = 1 ; i <= N ; i ++ ) {
			B[i] = sc.nextLong();
		}

		//
		Long yoryoku = 0L ;
		Long mCountSum = 0L ;
		for( int i = 1 ; i <= N ; i ++ ) {
			Long mCount = 0L ;//モンスターを倒してもらえる人数
			if(yoryoku <= A[i]) {//余力より多い場合
				mCount =  yoryoku ;//まず余力分を倒す
				Long nokori = A[i] - yoryoku ;//残りのモンスター数
				if(nokori <= B[i]) {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				}else {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				}
			}else {//余力より少ないモンスターなら
				mCount = A[i] ; //全滅させる
				yoryoku = B[i] ; //すべてを余力にする
			}
			mCountSum += mCount ;
		}
		//最後の町
		if(0 < yoryoku) {
			if(yoryoku <= A[N+1]) {//余力より多い場合
				mCountSum += yoryoku ;
			}else {
				mCountSum += A[N+1] ; //全滅させる
			}
		}


		System.out.println(mCountSum);
	}
} public class Main {


	public static void main(String[] args) {
		(new Main()).execute();
	}
	public void execute() {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int  N = sc.nextInt();
		Long A[] = new Long[N+2] ;
		Long B[] = new Long[N+1] ;

		for( int i = 1 ; i <= N + 1; i ++ ) {
			A[i] = sc.nextLong();
		}
		for( int i = 1 ; i <= N ; i ++ ) {
			B[i] = sc.nextLong();
		}

		//
		Long yoryoku = 0L ;
		Long mCountSum = 0L ;
		for( int i = 1 ; i <= N ; i ++ ) {
			Long mCount = 0L ;//モンスターを倒してもらえる人数
			if(yoryoku <= A[i]) {//余力より多い場合
				mCount =  yoryoku ;//まず余力分を倒す
				Long nokori = A[i] - yoryoku ;//残りのモンスター数
				if(nokori <= B[i]) {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				}else {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				}
			}else {//余力より少ないモンスターなら
				mCount = A[i] ; //全滅させる
				yoryoku = B[i] ; //すべてを余力にする
			}
			mCountSum += mCount ;
		}
		//最後の町
		if(0 < yoryoku) {
			if(yoryoku <= A[N+1]) {//余力より多い場合
				mCountSum += yoryoku ;
			}else {
				mCountSum += A[N+1] ; //全滅させる
			}
		}


		System.out.println(mCountSum);
	}
} Main
import java.util.Scanner;

public class Main {


	public static void main(String[] args) {
		(new Main()).execute();
	}
	public void execute() {
		// TODO 自動生成されたメソッド・スタブ
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		int  N = sc.nextInt();
		Long A[] = new Long[N+2] ;
		Long B[] = new Long[N+1] ;

		for( int i = 1 ; i <= N + 1; i ++ ) {
			A[i] = sc.nextLong();
		}
		for( int i = 1 ; i <= N ; i ++ ) {
			B[i] = sc.nextLong();
		}

		//
		Long yoryoku = 0L ;
		Long mCountSum = 0L ;
		for( int i = 1 ; i <= N ; i ++ ) {
			Long mCount = 0L ;//モンスターを倒してもらえる人数
			if(yoryoku <= A[i]) {//余力より多い場合
				mCount =  yoryoku ;//まず余力分を倒す
				Long nokori = A[i] - yoryoku ;//残りのモンスター数
				if(nokori <= B[i]) {//残りを倒せるなら
					mCount = A[i] ;//全滅させる
					yoryoku = B[i] - nokori ; //余力を更新
				}else {//倒せないなら倒せるだけ
					mCount += B[i] ;
					yoryoku = 0L ;
				}
			}else {//余力より少ないモンスターなら
				mCount = A[i] ; //全滅させる
				yoryoku = B[i] ; //すべてを余力にする
			}
			mCountSum += mCount ;
		}
		//最後の町
		if(0 < yoryoku) {
			if(yoryoku <= A[N+1]) {//余力より多い場合
				mCountSum += yoryoku ;
			}else {
				mCountSum += A[N+1] ; //全滅させる
			}
		}


		System.out.println(mCountSum);
	}
}
