#include <bits/stdc++.h>
using namespace std;
#define vi vector<int>
#define pii pair<int,int>
#define x first
#define y second
#define pb push_back
#define mp make_pair
#define all(x) x.begin(),x.end()
#define ll long long 
#define inf 1000000007
#define mod 1000000007
#define N 5005
#define DBG(x) cerr<<(#x)<<"="<<x<<endl;
#define FOREACH(it,x) for(__typeof(x.begin()) it=x.begin();it!=x.end();it++)

template <class T> inline void Max(T &a,T b){if(a<b)a=b;}
template <class T> inline void Min(T &a,T b){if(a>b)a=b;}

int dp[101],a,b,c,ans[2010];

int solve1(int n){
    if(n==1)return 0;
    if(n<=0)return -inf;
    int &ret=dp[n];
    if(ret+1)return ret;
    ret=inf;
    for(int i=0;i<=n;i++)
        for(int j=i;j<=n;j++){
            ret=min(ret,max(solve1(i)+a,max(solve1(j-i)+b,solve1(n-j)+c)));
        }
    return ret;
}
map<ll,int>Dp;
ll n;
int solve(ll n){
    if(n<=100)return solve1(n);
    if(Dp.find(n)!=Dp.end())return Dp[n];
    int l=0,r=60000;int ans=inf;
    //cerr<<n<<":\n";
    
    return Dp[n]=ans;
}
ll f[N];
ll solve2(int w){
    //if(w<lim)return 1;
    ll &t=f[w];
    if(t+1)return t;
    t=0;
    if(w>=a)t+=solve2(w-a);
    if(w>=b)t+=solve2(w-b);
    if(w>=c)t+=solve2(w-c);
    return f[w]=t;
}
int main(){
    int T=800,i,j,k,m;
    scanf("%d",&T);
    while(T--){
        cin>>n>>a>>b>>c;
        if(n<=100){
        //Dp.clear();
        memset(dp,-1,sizeof(dp));
        int ans=solve1(n);
        printf("%d\n",ans);continue;
        }
        memset(f,-1,sizeof(f));
        int lim=min(a,min(b,c)),ans=0;
        for(i=0;i<lim;i++)f[i]=1;
        for(i=1;;i++){
            ll t=solve2(i);
            if(t>=n){ans=i;break;}
        }
        printf("%d\n",ans);
        
    }
    //*/
    /*
    a=5,b=5,c=5;
    Dp.clear();
    for(n=1;n<=T;n++){
        
        ans[n]=solve1((int)n);
        j=solve(1LL*n);
        if(ans[n]!=j){
            cerr<<n<<" ";
        }
        //printf("%d\t",ans);
    }
    DBG("?")
    for(i=1;i<=T;i=j){
        j=i;
        while(j<=T&&ans[j]==ans[i]){
            j++;
        }
        printf("%d %d %d %d\n",i,j-1,ans[i],j-i);
    }
    //*/
    //int ans=solve(n);

    return 0;
}