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