#include using namespace std; #define rep(i,n) repi(i,0,n) #define repi(i,a,b) for(int i=int(a);i> n; rep(i, n) cin >> a[i]; rep(i, n) cin >> b[i]; } struct monster { int id, level, cnt; monster(int id, int level, int cnt = 0) : id(id), level(level), cnt(cnt) {} void fight(int t) { level += t / 2, ++cnt; } bool operator <(const monster& t) const { return level != t.level ? level > t.level : cnt > t.cnt; } }; int simulate(int offset) { int ret = 0; priority_queue q; rep(i, n) q.emplace(i, a[i]); rep(i, n) { auto cur = q.top(); q.pop(); cur.fight(b[(i + offset) % n]); ret = max(ret, cur.cnt); q.push(cur); } return ret; } int solve() { int ans = int(1e9); rep(i, n) ans = min(ans, simulate(i)); return ans; } int main() { cin.tie(0); ios_base::sync_with_stdio(false); input(); cout << solve() << endl; }