# 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; }