#include<iostream>
using namespace std;
struct block {
int w, h; //宽度和高度
};
int main() {
//freopen("in.txt","r",stdin);
int N = 0;
cin >> N;
block a[20];
while(N--) {
int m, l;
cin >> m;
for (int i = 0; i < m; i++)
cin >> a[i].w >> a[i].h; //输入宽度和高度
cin >> l; //l表示正方形的边长
int min_height = 1000; //表示最小高度
for (int i = 0; i < m; i++) {
int j = i, sum = 0, max_height = 0; //sum存储 宽度
while (sum < l && j < m) { //当此时宽度小于 正方形边数的时候
sum += a[j].w;
if (a[j].h > max_height) // 更新高度,
max_height = a[j].h;
j++;
}
if (sum >= l && max_height < min_height) //更新最小的宽度
min_height = max_height;
}
cout << min_height + l << endl;
}
}