#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;   
}