#include <iostream>
using namespace std;
int main()
{
unsigned int iloscSkladnikow;
cin >> iloscSkladnikow;
unsigned int* dostepne1 = new unsigned int[iloscSkladnikow];
unsigned int* dostepne2 = new unsigned int[iloscSkladnikow];
unsigned int* makowiec = new unsigned int[iloscSkladnikow];
unsigned int* keks = new unsigned int[iloscSkladnikow];
for(unsigned int i = 0;i<iloscSkladnikow;++i)
{
cin >> dostepne1[i];
dostepne2[i]=dostepne1[i];
}
for(unsigned int i = 0;i<iloscSkladnikow;++i)
cin >> makowiec[i];
for(unsigned int i = 0;i<iloscSkladnikow;++i)
cin >> keks[i];
unsigned int maxMakowcow1 = 0xFFFFFFFF, maxMakowcow2 = 0xFFFFFFFF;
unsigned int maxKeksow1 = 0xFFFFFFFF, maxKeksow2 = 0xFFFFFFFF;
for(unsigned int i = 0;i<iloscSkladnikow;++i) //ile mozna zrobic makowcow a ile keksow na poczatku
{
unsigned int minTerazMakowcow = 0xFFFFFFFF;
unsigned int minTerazKeksow = 0xFFFFFFFF;
if(makowiec[i]) minTerazMakowcow = dostepne1[i]/makowiec[i];
if(keks[i]) minTerazKeksow = dostepne2[i]/keks[i];
if(minTerazMakowcow < maxMakowcow1) maxMakowcow1 = minTerazMakowcow;
if(minTerazKeksow < maxKeksow1) maxKeksow1 = minTerazKeksow;
}
for(unsigned int i=0;i<iloscSkladnikow;++i) //odejmujemy skladniki
{
dostepne1[i] -= makowiec[i]*maxMakowcow1;
dostepne2[i] -= keks[i]*maxKeksow1;
}
for(unsigned int i = 0;i<iloscSkladnikow;++i) //ile mozna zrobic makowcow a ile keksow po zrobieniu poprzednich
{
unsigned int minTerazMakowcow = 0xFFFFFFFF;
unsigned int minTerazKeksow = 0xFFFFFFFF;
if(makowiec[i]) minTerazMakowcow = dostepne2[i]/makowiec[i];
if(keks[i]) minTerazKeksow = dostepne1[i]/keks[i];
if(minTerazMakowcow < maxMakowcow2) maxMakowcow2 = minTerazMakowcow;
if(minTerazKeksow < maxKeksow2) maxKeksow2 = minTerazKeksow;
}
if(maxMakowcow1+maxKeksow2>maxMakowcow2+maxKeksow1) cout << maxMakowcow1+maxKeksow2;
else cout << maxMakowcow2+maxKeksow1;
return 0;
}