#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <cmath>
#include <iostream>
#include <set>
#include <fstream>
#include <string>
#include <vector>

using namespace std;
#define FOR(i,s,e) for (int i=(s); i<(e); i++)
#define FOE(i,s,e) for (int i=(s); i<=(e); i++)
#define FOD(i,s,e) for (int i=(s); i>=(e); i--)
#define LL long long
#define eps 1e-9
#define pi acos(-1.0)
#define fail {printf("Impossible\n"); return 0;}
LL max(LL a,LL b){if (a>b){return a;} else {return b;}}
LL min(LL a,LL b){if (a<b){return a;} else {return b;}}

LL n;
int a, b, c;

#define K 30001

LL dpa[K], dpb[K], dpc[K], dps[K];

void solve(){
    scanf("%lld%d%d%d", &n, &a, &b, &c);
    FOE(i, 0, K - 1) dpa[i] = dpb[i] = dpc[i] = dps[i] = 0;
    if (n == 1){
        puts("0");
        return;
    }

    dps[0] = 1;
    FOE(i, 1, K - 1){
        dps[i] = (i - a >= 0? dps[i - a]:0) + (i - b >= 0? dps[i - b]:0) + (i - c >= 0? dps[i - c]:0);
        if (dps[i] < dps[i - 1]) dps[i] = dps[i - 1];
      //  printf("dps[%d] = %I64d\n", i, dps[i]);
        if (dps[i] >= n){
            printf("%d\n", i);
            return;
        }
    }

}

int main(){
    int t;
    scanf("%d", &t);
    while (t--){
        solve();
    }

    return 0;
}