#include<bits/stdc++.h>
using namespace std;
long long Price[3][2];
vector<int> V;
long long Ans;
void dfs(int pos,long long Left,long long Sum)
{
	if((int)(V.size())==0)
	{
		Ans=Sum;
		return ;
	}
	int Realpos=V[pos];
	long long mx=Left/Price[Realpos][0];
	if(pos==(int)(V.size())-1)
	{
		Ans=max(Ans,Sum+mx*(Price[Realpos][1]-Price[Realpos][0]));
		return ;
	}
	for(int i=0;i<=mx;i++)
		dfs(pos+1,Left-i*Price[Realpos][0],Sum-i*Price[Realpos][0]+i*Price[Realpos][1]);
	return ;
}
int main()
{
	long long N;
	cin>>N;
	for(int j=0;j<2;j++)
		for(int i=0;i<3;i++)
			cin>>Price[i][j];
	for(int i=0;i<3;i++)
		if(Price[i][0]<Price[i][1])
			V.push_back(i);
	dfs(0,N,N);
	for(int i=0;i<3;i++)
		swap(Price[i][0],Price[i][1]);
	V.clear();
	N=Ans;
	for(int i=0;i<3;i++)
		if(Price[i][0]<Price[i][1])
			V.push_back(i);
	dfs(0,N,N);
	cout<<Ans<<endl;
	return 0;
}