#include <bits/stdc++.h>

using namespace std;

struct node {
	int v, c;
}a[150010];

int dp[150010][16];

int main()
{
	int T, n, K;
	scanf("%d", &T);
	while (T--) {
		scanf("%d%d", &n, &K);
		for (int i = 1; i <= n; i++) {
			scanf("%d%d", &a[i].v, &a[i].c);
		}
		sort(a + 1, a + n + 1, [](const node &a, const node &b) {
			return a.v < b.v;
			});
		for (int i = 0; i <= K; i++) dp[n + 1][i] = 0;
		for (int i = n; i >= 1; i--) {
			dp[i][0] = max(dp[i + 1][0], a[i].v - a[i].c);
			for (int j = 1; j <= K; j++) {
				dp[i][j] = max(dp[i + 1][j], min(a[i].v - a[i].c, dp[i + 1][j - 1] - a[i].c));
			}
		}
		printf("%d\n", dp[1][K]);
	}
	return 0;
}

