/**
 *    author:  enot.1.10, Vladimir Smykalov (enot.1.10@gmail.com)
 *    created: 19.09.2015 22:23:47       
**/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <ctime>
#include <cassert>
#include <queue>

#define fs first
#define sc second
#define F first
#define S second
#define pb push_back
#define mp make_pair
#define forn(i, n) for(int i = 0 ; (i) < (n) ; ++i)
#define forit(it,v) for(typeof((v).begin()) it = v.begin() ; it != (v).end() ; ++it)
#define eprintf(...) fprintf(stderr, __VA_ARGS__),fflush(stderr)
#define sz(a) ((int)(a).size())
#define all(a) (a).begin(),a.end()
#define pw(x) (1LL<<(x))

using namespace std;

typedef long long ll;
typedef double dbl;
typedef vector<int> vi;
typedef pair<int, int> pi;

const int inf = (int)1.01e9;
const dbl eps = 1e-9;

/* --- main part --- */

#define TASK "1"

const int maxn = (int)4e3 + 10;
const ll INF = (ll)1e18;

ll d[maxn];

int main()
{
    #ifdef home
        assert(freopen(TASK".in", "r", stdin));
        assert(freopen(TASK".out", "w", stdout));
    #endif
    int tn;
    scanf("%d", &tn);
    forn(tt, tn)
    {
        ll n;
        int a, b, c;
        scanf("%lld%d%d%d", &n, &a, &b, &c);
        d[0] = 1;
        for (int i = 1; i < maxn; ++i)
        {
            d[i] = d[i - 1];
            ll s = 0;
            if (i >= a) s += d[i - a];
            if (i >= b) s += d[i - b];
            if (i >= c) s += d[i - c];
            d[i] = max(d[i], s);
            d[i] = min(d[i], INF);
        }
        forn(i, maxn) if (d[i] >= n)
        {
            printf("%d\n", i);
            break;
        }
    }
    #ifdef home
        eprintf("Time: %d ms\n", (int)(clock() * 1000. / CLOCKS_PER_SEC));
    #endif
    return 0;
}