# include <iostream>
# include <cstring>
# include <cmath>
# include <vector>
# include <algorithm>
# include <string>
# include <map>
# include <set>
# include <queue>
# include <assert.h>
# include <stdio.h>
using namespace std;
//Bit necessities
#define LSOne(S) (S & (-S))

# define pb push_back
# define For(iterator, begin, end) for(iterator = (begin); iterator < (end); iterator++)
# define reverse(iterator, begin, end) for(iterator = (begin); iterator >= (end); iterator--)
typedef long long ll;

typedef long long df;

typedef pair<df, df> pii;
typedef vector<pii> vec_pair;
typedef df main_type;

# define input(t) cin>>t
# define output(t) cout << t << "\n"
# define string_equals(a, b) ((a).compare((b)) == 0)

# define MOD 1000000007
# define MY_MAX 123456789
# define MAX(a, b, c) ((a) > (b) ? (a) > (c) ? (a) : (c) : (b) > (c) ? (b) : c)


# define gc getchar_unlocked
# define pc(x) putchar_unlocked(x)

long long read_df() {
    char c = gc();
    while(c<'0' || c>'9') c = gc();
    long long ret = 0;
    while(c>='0' && c<='9') {
        ret = 10 * ret + c - 48;
        c = gc();
    }
    return ret;
}

# define MAXN 100005
# define MAXLGN 20
# define ABS(x) ((x) < 0 ? -(x) : (x))
# define dist(a, b) (ABS((a).first - (b).first) + ABS((a).second - (b).second))
int main()
{
    df t, i, j, k;
    cin >> t;

    while(t--) {
        df n, a, b, c, ri, rj, rk, si, sj, sk;
        cin >> n >> a >> b >> c;
        df p[5000];
        p[0] = 1;
        if(n == 1)
            cout << 0 << endl;
        else {
            for(i = 1; i < 5000; i++) {
                p[i] = 0;
                if(i - a >= 0)
                    p[i] += p[i-a];
                if(i - b >= 0)
                    p[i] += p[i-b];
                if(i - c >= 0)
                    p[i] += p[i-c];
                if(p[i] == 0)
                    p[i] = 1;
                if(p[i] >= n) {
                    cout << i << endl;
                    break;
                }
            }
        }
    }

    return 0;
}