#include<iostream>
using namespace std;
typedef long long int lli;
lli v[200];

lli findNumber(){
  lli N,A,B,C,q;
  // M(D) = M(D-A) + M(D-B) + M(D-C) ;  M negativo es 0
  // queremos D minimo tal que M(D)>=N
  cin >> N >> A >> B >> C;
  q = min(A,min(B,C));
  if(N==1) return 0;
  for(lli i = 0; i < q;i++){
    v[i] = 1;
  }
  for(lli d = q ; d < 3200; d++){
    v[d%101] =
      ((d>=A)? v[(d-A)%101] : 0) +
      ((d>=B)? v[(d-B)%101] : 0) +
      ((d>=C)? v[(d-C)%101] : 0);
    if(v[d%101] >=N) return d;
  }
  return -1;
}

int main(){
  int T;
  cin >> T;
  while(T--) cout << findNumber() << endl;
}