#include <bits/stdc++.h> #define SZ(X) ((int)(X).size()) #define ALL(X) (X).begin(), (X).end() #define REP(I, N) for (int I = 0; I < (N); ++I) #define REPP(I, A, B) for (int I = (A); I < (B); ++I) #define RI(X) scanf("%d", &(X)) #define RII(X, Y) scanf("%d%d", &(X), &(Y)) #define RIII(X, Y, Z) scanf("%d%d%d", &(X), &(Y), &(Z)) #define DRI(X) int (X); scanf("%d", &X) #define DRII(X, Y) int X, Y; scanf("%d%d", &X, &Y) #define DRIII(X, Y, Z) int X, Y, Z; scanf("%d%d%d", &X, &Y, &Z) #define RS(X) scanf("%s", (X)) #define CASET int ___T, case_n = 1; scanf("%d ", &___T); while (___T-- > 0) #define MP make_pair #define PB push_back #define MS0(X) memset((X), 0, sizeof((X))) #define MS1(X) memset((X), -1, sizeof((X))) #define LEN(X) strlen(X) #define PII pair<int,int> #define VPII vector<pair<int,int> > #define PLL pair<long long,long long> #define F first #define S second typedef long long LL; using namespace std; const LL INF = 2e15; const int SIZE = 1e6+10; // template end here //#include "interactive/119.h" /*void Init(int *N,int *a,int *b){ scanf("%d%d%d",N,a,b); } int Ask(char c,int x){ printf("query %d: ",x); int ret; scanf("%d",&ret); return ret; } void Answer(int x){ printf("answer:%d\n",x); }*/ LL C(int x,int y,int z){ //if(y>x-y)y=x-y; LL res=1; REPP(i,1,y+1){ res=res*(x-y-z+i)/i; if(res>INF)return res; } REPP(i,1,z+1){ res=res*(x-z+i)/i; if(res>INF)return res; } return res; } int kk[3300][3300]; int used[3300][3300]; int tt; LL cal(int r,int A[]){ if(r<0)return 0; //if(a<b)swap(a,b); tt++; LL res=0; for(int i=r/A[2];i>=0;i--){ for(int j=(r-i*A[2])/A[1];j>=0;j--){ int k=(r-i*A[2]-j*A[1])/A[0]; kk[i][j]=k; used[i][j]=tt; if(used[i][j+1]==tt&&kk[i][j+1]>=k)continue; if(used[i+1][j]==tt&&kk[i+1][j]>=k)continue; LL v=C(i+j+k,j,k); res+=v; if(res>INF)return INF; } } return res; } int q(LL x,int A[]){ if(x==1)return 0; LL ll=A[1],rr=A[2]*32; while(ll<rr){ LL me=(ll+rr)>>1; LL V=cal(me,A); if(V>=x)rr=me; else ll=me+1; } return ll; } int main(){ CASET{ int A[3]; LL N; int a,b; cin>>N; REP(i,3)RI(A[i]); sort(A,A+3); printf("%d\n",q(N,A)); } return 0; }