#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<vector> #include<queue> #include<map> #include<set> using namespace std; #define INF (1<<29) #define min(x,y) (((x)<(y))?(x):(y)) #define max(x,y) (((x)>(y))?(x):(y)) #define sqr(x) ((x)*(x)) #define abs(x) (((x)>(0))?(x):(-(x))) #define FOR(i,x,y) for(int i=(x);i<(y);++i) #define FORS(i,x,y,s) for(int i=(x);i<(y);i+=(s)) #define FOE(i,x,y) for(int i=(x);i<=(y);++i) #define CLR(i) memset(i,0,sizeof(i)) #define ll long long #define eps (1e-8) #define MAXN (5000) ll f(int cost, int A,int B,int C, ll ans[]){ if (cost<0) return 0ll; if (ans[cost] != -1) return ans[cost]; ans[cost] = f(cost-A,A,B,C,ans)+f(cost-B,A,B,C,ans)+f(cost-C,A,B,C,ans); ans[cost] = max(ans[cost],1); return ans[cost]; } int T,A,B,C; ll N; ll ans[MAXN]; int main() { scanf("%d",&T); FOR(t,0,T){ memset(ans,-1,sizeof(ans)); ans[0] = 1ll; scanf("%lld%d%d%d",&N,&A,&B,&C); if (N==1ll){ printf("0\n"); continue; } FOR(i,1,MAXN){ ll x = f(i,A,B,C,ans); if (x>=N){ printf("%d\n",i); break; } } } return 0; }