#define _CRT_SECURE_NO_WARNINGS #define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING #include using namespace std; #define CRP(t, x) const t &x #define OPX(op, t, x) operator op(CRP(t, x)) #define OPL(t, x) bool OPX(<, t, x) const #define FIL(x, v) memset(x, v, sizeof(x)) #define CLR(x) FIL(x, 0) #define NE1(x) FIL(x, -1) #define INF(x) FIL(x, 0x3f) #ifndef _DEBUG #define _DEBUG 0 #endif // !_DEBUG #define IFD if (_DEBUG) typedef int64_t ll, i64; typedef uint64_t ull, u64; template using enable_if_arithmetic = typename enable_if::value>::type; template using enable_if_integral = typename enable_if::value>::type; inline char getchar(int) { static char buf[64 << 20], *S = buf, *T = buf; if (S == T) T = fread(S = buf, 1, 64 << 20, stdin) + buf; return S == T ? EOF : *S++; } template > inline bool read(T &x) { int ch = x = 0, f = 1; while (!isdigit(ch = getchar())) if (ch == EOF) return false; else if (ch == '-') f = 0; for (; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0'; return x = f ? x : -x, true; } template > inline bool read(T &x, Args &... args) { return read(x) && read(args...); } ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); } ll fpow(ll a, ll b, ll m) { ll r = 1; for (; b; b >>= 1, a = a * a % m) if (b & 1) r = r * a % m; return r; } constexpr double eps = 1e-8; inline int sgn(double x) { return x > eps ? 1 : x < -eps ? -1 : 0; } const int N = 2e5 + 50; int p[N]; ll Q, n, X, A, Y, B, K; ll lcm(ll a, ll b) { return a / gcd(a, b) * b; } bool check(int len) { if (len <= 0) return true; int ccnt = len / lcm(A, B); int acnt = len / A - ccnt; int bcnt = len / B - ccnt; ll ans = -1, tmp = 0; len = min(len, ccnt + acnt + bcnt); for (int i = 0; i < len; i++) { if (i < ccnt) tmp += p[i] * (X + Y); else if (i < ccnt + acnt) tmp += p[i] * X; else if (i < ccnt + acnt + bcnt) tmp += p[i] * Y; if (tmp >= K) { ans = i + 1; break; } } return ans == -1; } int main() { read(Q); while (Q--) { read(n); for (int i = 0; i < n; i++) read(p[i]), p[i] /= 100; read(X, A, Y, B, K); if (X < Y) swap(A, B), swap(X, Y); sort(p, p + n, greater()); if (check(n)) puts("-1"); else { int L = 0, R = n + 1, M; while (R - L > 1) if (check(M = (L + R) >> 1)) L = M; else R = M; M = L; if (check(M)) M = R; printf("%d\n", M); } } return 0; }