#include #include #include #include #include using namespace std; const int N = 2e3 + 100; const int INF = 0x3f3f3f3f; long long a[N], b[N], t[N]; long long dp[N][N]; int main(){ int T; cin >> T; while (T --){ int n; cin >> n; for (int i = 1; i <= n; i ++) cin >> a[i]; b[0] = 0; for (int i = 1; i <= n; i ++){ cin >> b[i]; b[i] += b[i - 1]; } long long ma = 1e18; memset(dp, 0x3f, sizeof(dp)); // cout << dp[0][0] << endl; dp[0][0] = 0; for (int i = 1; i <= n; i ++){ dp[i][0] = 0; for (int j = 1; j <= i; j ++){ dp[i][j] = dp[i - 1][j]; if (dp[i - 1][j - 1] + a[i] <= b[i]){ dp[i][j] = min(dp[i][j], dp[i - 1][j - 1] + a[i]); } } } int ans; for (int i = n; i >= 0; i --) if (dp[n][i] <= ma){ ans = i; break; } cout << ans << endl; } }