import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[] A = convert(br.readLine().split(" ")); int[] B = convert(br.readLine().split(" ")); ArrayList team = new ArrayList(); for (int i = 0; i < N; i++) { team.add(new int[]{A[i], 0}); } team.sort(new CustomComparator()); int maxMini = Integer.MAX_VALUE; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { int enemy = i + j; if (enemy >= N) { enemy = enemy - N; } int[] tmp = team.get(0); tmp[0] = tmp[0] + (B[enemy] / 2); tmp[1] = tmp[1] + 1; team.set(0, tmp); team.sort(new CustomComparator()); } team.sort(new LevelSort()); if (maxMini > team.get(0)[1]) { maxMini = team.get(0)[1]; } } System.out.println(maxMini); } private static int[] convert(String[] source) { int[] ret = new int[source.length]; for (int i = 0; i < source.length; i++) { ret[i] = Integer.parseInt(source[i]); } return ret; } static class CustomComparator implements Comparator { //比較メソッド(データクラスを比較して-1, 0, 1を返すように記述する) public int compare(int[] a, int[] b) { int no1 = a[0]; int no2 = b[0]; int no3 = a[1]; int no4 = b[1]; //こうすると社員番号の昇順でソートされる if (no1 > no2) { return 1; } else if (no1 == no2) { if (no3 > no4) { return 1; } else if (no3 == no4) { return 0; } else { return -1; } } else { return -1; } } } static class LevelSort implements Comparator { //比較メソッド(データクラスを比較して-1, 0, 1を返すように記述する) public int compare(int[] a, int[] b) { int no1 = a[1]; int no2 = b[1]; //こうすると社員番号の昇順でソートされる if (no1 < no2) { return 1; } else if (no1 == no2) { return 0; } else { return -1; } } } }