// NOT ENDED
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> pll;
const ll SIZ = ((ll)3e5 + 5), LONGBOI = ((ll)1e17 + 5);
mt19937_64 REALrandom(chrono::system_clock::to_time_t(chrono::system_clock::now()));

struct mycompare{
    bool operator()(ll a, ll b) const{
        return a%10 > b%10;
    }
};

struct str{
    ll n;
};

bool operator < (str a, str b){
    return a.n < b.n;
}

stack<ll> s1, s2;
ll a[SIZ];
ll n, sum1, sum2;
bool flag;

int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    ll T;
    cin >> T;
    while(T > 0){
        T--;
        cin >> n;
        for(int i=1;i<=n;i++)cin>>a[i];
        sort(a+1, a+1+n);
        reverse(a+1, a+1+n);
        while(!s1.empty()) s1.pop();
        while(!s2.empty()) s2.pop();
        s1.push(a[1]); s1.push(a[3]); sum1 = a[1];
        s2.push(a[2]); s2.push(a[4]); sum2 = a[2];
        flag = true;

        for(int i=5; i < n; i+=2){
            if(2*s1.top() <= sum1 + a[i] && 2*s2.top() <= sum2 + a[i+1]){
                sum1 = s1.top(); sum2 = s2.top();
                s1.push(a[i]);
                s2.push(a[i+1]);
            }
            else if(2*s1.top() <= sum1 + a[i+1] && 2*s2.top() <= sum2 + a[i]){
                sum1 = s1.top(); sum2 = s2.top();
                s1.push(a[i+1]);
                s2.push(a[i]);
            }
            else { flag = false; break; }
        }

        if(n%2 == 1){
            if(2*a[n]>s1.top()+s2.top() ||
               2*s1.top() > a[n] + sum1 ||
               2*s2.top() > a[n] + sum2) flag = false;
        }
        else{
            if(!(sum1 + s2.top() >= 2*s1.top()
              && sum2 + s1.top() >= 2*s2.top())) flag = false;
        }

        if(flag == true) cout << "YES" << endl;
        else cout << "NO" << endl;
    }
    return 0;
}
