#include // O(NK) 時間解法 [[nodiscard]] static inline constexpr uint_fast64_t solve(const uint_fast32_t N, const uint_fast32_t K, const std::vector& A, const std::vector& B) noexcept { std::array>, 2> dp = { std::vector>(K + 1, { 0, 0 }), std::vector>(K + 1, { A[0], B[0] }) }; dp[1][0][1] = 0; for (uint_fast32_t i = 1; i < N; ++i) for (uint_fast32_t j = 1; j <= K; ++j) dp[(i & 1) ^ 1][j] = { std::max(dp[i & 1][j][0], dp[i & 1][j - 1][1]) + A[i], std::max(dp[i & 1][j - 1][0], dp[i & 1][j][1]) + B[i] }; return std::max(dp[N & 1][K][0], dp[N & 1][K][1]); } int main() { std::cin.tie(nullptr); std::ios::sync_with_stdio(false); uint_fast32_t T; std::cin >> T; for (uint_fast32_t i = 0; i < T; ++i) { uint_fast32_t N, K; std::cin >> N >> K; std::vector A(N), B(N); for (auto& a : A) std::cin >> a; for (auto& b : B) std::cin >> b; std::cout << solve(N, K, A, B) << '\n'; } return 0; }