#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF (1 << 30) #define LINF (1LL << 60) #define PI acos(-1.0) #define mem(a, b) memset(a, b, sizeof(a)) #define rep(i, a, n) for (int i = a; i < n; i++) #define per(i, a, n) for (int i = n - 1; i >= a; i--) #define eps 1e-8 #define debug puts("===============") #define pb push_back #define mkp make_pair #define all(x) (x).begin(),(x).end() #define fi first #define se second #define SZ(x) ((int)(x).size()) #define POSIN(x,y) (0 <= (x) && (x) < r && 0 <= (y) && (y) < c) typedef long long ll; typedef unsigned long long ULL; int main() { int test; ll a[2005],b[2005],sumb[2005]; scanf("%d", &test); rep(iii, 0, test) { int n; ll dp[2005]; mem(dp, -1); scanf("%d", &n); rep(i, 0, n){ scanf("%lld", &a[i]); } rep(i, 0, n){ scanf("%lld", &b[i]); sumb[i] = b[i]; if (i != 0) sumb[i] += sumb[i-1]; } dp[0] = 0; int ans = 0; rep(i, 0, n) { for (int j = i+1; j > 0; j--) { if (dp[j-1] == -1) continue; if (dp[j-1] + a[i] <= sumb[i]) { if (dp[j] == -1) dp[j] = dp[j-1] + a[i]; dp[j] = min(dp[j], dp[j-1] + a[i]); ans = max(ans, j); } } } printf("%d\n", ans); } }