#include<cstdio> #include<iostream> #include<vector> #include<algorithm> #include<string> #include<cstring> using namespace std; typedef long long LL; typedef vector<int> VI; #define REP(i,n) for(int i=0, i##_len=(n); i<i##_len; ++i) #define EACH(i,c) for(__typeof((c).begin()) i=(c).begin(),i##_end=(c).end();i!=i##_end;++i) #define eprintf(s...) fprintf(stderr, s) template<class T> inline void amin(T &a, const T &b) { if (b<a) a=b; } template<class T> inline void amax(T &a, const T &b) { if (a<b) a=b; } LL dp[4011]; LL N; int A, B, C; int main() { int T; scanf("%d", &T); REP ($, T) { scanf("%lld%d%d%d", &N, &A, &B, &C); if (A > B) swap(A, B); if (B > C) swap(B, C); if (A > B) swap(A, B); if (N == 1) { puts("0"); continue; } memset(dp, 0xc0, sizeof dp); dp[0] = 1; for (int i=1; ; i++) { dp[i] = dp[i-1]; if (i >= B) amax(dp[i], dp[i-A] + dp[i-B]); if (i >= C) amax(dp[i], dp[i-A] + dp[i-B] + dp[i-C]); if (dp[i] >= N) { printf("%d\n", i); break; } } } return 0; }