#include <vector> #include <map> #include <set> #include <queue> #include <deque> #include <list> #include <iostream> #include <cstdio> #include <cmath> #include <cassert> #include <ctime> #include <cctype> #include <cstring> #include <bitset> #include <algorithm> #include <iomanip> #define ld long double #define ll long long #define ull unsigned long long #define pb push_back #define mp make_pair #define fst first #define snd second #define y0 _y0 #define y1 _y1 using namespace std; template < typename T > T abs(T x) { return x > 0 ? x : -x; } template < typename T > T sqr(T x) { return x * x; } const int MAX = 10000; ll dp[MAX + 6]; int main() { int t; cin >> t; while (t--) { ll n; int a[3], pos[3]; cin >> n >> a[0] >> a[1] >> a[2]; sort(a, a + 3); memset(dp, 0, sizeof(ll) * (MAX + 6)); dp[0] = 1; int ans; ll sum = 0; for (int i = 0; i <= MAX; i++) { if (dp[i] >= n) { ans = i; break; } for (int j = 0; j < 3; j++) { dp[i + a[j]] += dp[i]; } } int realans = ans; for (int i = ans; i >= 0; i--) { sum = 0; for (int j = 0; j <= 100; j++) { if (i < j) break; if (i - j + a[0] > i) sum += dp[i - j]; } if (sum >= n) realans = i; } cout << realans << "\n"; } return 0; }