#include #include #include #include #include using namespace std; const long long INF = 1000000000000; long long k, ans; long long l[10]; long long d[10] = {}; pair arr[10]; long long sum(long long l1, long long r1, long long l2, long long r2, int p) { long long l = max(l1, l2), r = min(r1, r2); // cerr << l << ' ' << r << endl; if (l > r) return 0; if (p == 0) return r - l + 1; if (p == 1) return (l + r) * (r - l + 1) / 2; if (p == 2) return r * (r + 1) * (2 * r + 1) / 6 - (l - 1) * l * (2 * l - 1) / 6; return 0; } long long count_num(long long A, long long B, long long d1, long long d2, int p) { // cerr << A << ' ' << B << ' ' << d1 << ' ' << d2 << endl; long long ret = 0; // type 1: if (2 * A <= B) { ret += 2 * sum(A + 1, 2 * A, d1, d2, p + 1) + (- 2 * A - 1) * sum(A + 1, 2 * A, d1, d2, p + 0); // cerr << ret << endl; ret += sum(2 * A + 1, B, d1, d2, p + 1); // cerr << ret << endl; ret += - sum(B + 1, 2 * B, d1, d2, p + 1) + (2 * B + 1) * sum(B + 1, 2 * B, d1, d2, p + 0); // cerr << ret << endl; } else { ret += 2 * sum(A + 1, B, d1, d2, p + 1) + (- 2 * A - 1) * sum(A + 1, B, d1, d2, p + 0); ret += (2 * B - 2 * A) * sum(B + 1, 2 * A, d1, d2, p + 0); ret += - sum(2 * A + 1, 2 * B, d1, d2, p + 1) + (2 * B + 1) * sum(2 * A + 1, 2 * B, d1, d2, p + 0); } return ret; } void work() { ans = 0; cin >> l[4] >> l[3] >> l[2] >> l[1]; cin >> k; if (k == 0 || k == 1) { cout << ans << endl; return ; } k -= 1; l[5] = 0; d[4] = l[5] + 1; d[3] = l[4] + 1; d[2] = l[3] + 1; d[1] = l[2] + 1; // while (k) { // for (int i = 1; i <= 4; i++) // arr[i] = make_pair(i * d[i], i); // sort(arr + 1, arr + 4 + 1); // long long mx1 = arr[1].first, mx2 = arr[2].first, id = arr[1].second; // long long a = ((mx2 - mx1 + 1) + (id - 1)) / id; // a = min(a, 2 * l[id] + 1 - d[id]); // long long c = count_num(l[id + 1], l[id], d[id], d[id] + a - 1, 0); // long long w = count_num(l[id + 1], l[id], d[id], d[id] + a - 1, 1); // if (4 * c > k) // break; // d[id] = d[id] + a; // k -= 4 * c; // ans += 4 * id * w; // if (d[id] == 2 * l[id] + 1) // d[id] = 4 * d[1] + 1; // } // cerr << k << ' ' << ans << endl; while (k) { for (int i = 1; i <= 4; i++) arr[i] = make_pair(i * d[i], i); sort(arr + 1, arr + 4 + 1); long long mx1 = arr[1].first, mx2 = arr[2].first, id = arr[1].second; // if (mx1 == INF) // break; long long c = count_num(l[id + 1], l[id], d[id], d[id], 0); // cerr << id << ' '<< d[id] << ' ' << c << endl; ans += min(k, 4 * c) * id * d[id]; k -= min(k, 4 * c); d[id] = d[id] + 1; if (d[id] == 2 * l[id] + 1) d[id] = INF; } cout << ans << endl; } int main() { ios::sync_with_stdio(false); int T; cin >> T; while (T--) work(); return 0; }