#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
#include<set>
using namespace std;
#define INF (1<<29)
#define min(x,y) (((x)<(y))?(x):(y))
#define max(x,y) (((x)>(y))?(x):(y))
#define sqr(x) ((x)*(x))
#define abs(x) (((x)>(0))?(x):(-(x)))
#define FOR(i,x,y) for(int i=(x);i<(y);++i)
#define FORS(i,x,y,s) for(int i=(x);i<(y);i+=(s))
#define FOE(i,x,y) for(int i=(x);i<=(y);++i)
#define CLR(i) memset(i,0,sizeof(i))
#define ll long long
#define eps (1e-8)

#define MAXN (5000)

ll f(int cost, int A,int B,int C, ll ans[]){
    if (cost<0) return 0ll;
    if (ans[cost] != -1) return ans[cost];
    
    ans[cost] = f(cost-A,A,B,C,ans)+f(cost-B,A,B,C,ans)+f(cost-C,A,B,C,ans);
    ans[cost] = max(ans[cost],1);
    
    return ans[cost];
}

int T,A,B,C;
ll N;
ll ans[MAXN];

int main() {
    scanf("%d",&T);
    FOR(t,0,T){
        memset(ans,-1,sizeof(ans));
        ans[0] = 1ll;
        
        scanf("%lld%d%d%d",&N,&A,&B,&C);
        if (N==1ll){
            printf("0\n");
            continue;
        }
        FOR(i,1,MAXN){
            ll x = f(i,A,B,C,ans);
            if (x>=N){
                printf("%d\n",i);
                break;
            }
        }
    }
    
    return 0;
}